WITH TT AS( SELECT 1 U_ID FROM DUAL UNION ALL SELECT 2 FROM DUAL UNION ALL SELECT 3 FROM DUAL UNION ALL SELECT 4 FROM DUAL UNION ALL SELECT 5 FROM DUAL ) , T AS( SELECT 1 U_ID FROM DUAL UNION ALL SELECT 2 FROM DUAL UNION ALL SELECT 3 FROM DUAL ) SELECT U_ID FROM TT A WHERE U_ID IN(1,2,3,4,5) AND NOT EXISTS(SELECT 1 FROM T WHERE U_ID=A.U_ID) --或者:SELECT U_ID FROM TT MINUS SELECT U_ID FROM t
你的字段的一个值是1,2,3,4,5 还是5个值分别为1,2,3,4,5SQL> select replace('1,2,3,4,5','1,2,3,','') from dual 2 /REP --- 4,5多个的话就用minus 或者not in
WITH TT AS( SELECT '1,2,3,4,5' U_ID FROM DUAL ) SELECT substr(U_ID,7,3) FROM TT 难道我理解有误!!!!
SQL> SQL> with a as (select 1 u_id from dual union all 2 select 2 u_id from dual union all 3 select 3 u_id from dual union all 4 select 4 u_id from dual union all 5 select 5 u_id from dual ) 6 select u_id from a 7 minus 8 select U_ID from tablet;
WITH TT AS(
SELECT 1 U_ID FROM DUAL
UNION ALL
SELECT 2 FROM DUAL
UNION ALL
SELECT 3 FROM DUAL
UNION ALL
SELECT 4 FROM DUAL
UNION ALL
SELECT 5 FROM DUAL
) ,
T AS(
SELECT 1 U_ID FROM DUAL
UNION ALL
SELECT 2 FROM DUAL
UNION ALL
SELECT 3 FROM DUAL
)
SELECT U_ID FROM TT A WHERE U_ID IN(1,2,3,4,5) AND NOT EXISTS(SELECT 1 FROM T WHERE U_ID=A.U_ID)
--或者:SELECT U_ID FROM TT MINUS SELECT U_ID FROM t
2 /REP
---
4,5多个的话就用minus 或者not in
SELECT '1,2,3,4,5' U_ID FROM DUAL
)
SELECT substr(U_ID,7,3) FROM TT 难道我理解有误!!!!
表T
字段 u_id u_name 等等
1 XXX
2 YYY
3 ZZZ
......
但是u_id 里没有 4,5给定的值 1,2,3,4,5如果我想查出 uid 在 12345中的 ,
可以 select * from T where T.u_id in (1,2,3,4,5); rs = 1,2,3但是现在我想得到的是 rs = 4,5 注意 4,5 在表T中的 u_id值 并没有。在此谢过楼上诸位。
是的 我以前就是这样处理的,建个表把值放进去。我现在就是想寻求sql语句。
我后面给的不是SQL是什么啊??
我的 in 或 exists 里面的 可能有 几百个值,
表里面也是。
我不可能 with table as 那样写。我目前的处理方式是建个表,把值copy进去
然后联查。
minus
select U_ID from tablet
SQL> select * from tablet;
U_ID
----------
1
2
3
SQL>
SQL> with a as (select 1 u_id from dual union all
2 select 2 u_id from dual union all
3 select 3 u_id from dual union all
4 select 4 u_id from dual union all
5 select 5 u_id from dual )
6 select u_id from a
7 minus
8 select U_ID from tablet;
U_ID
----------
4
5
SQL>
表中存在可能有10000多条人的信息。
现在来个文件 大概有500个人(其中有标识字段)、其中大多数在表里有、极少数在表里没有。
我想把没有的通过语句select出来
明白没?
我目前的做法是把 这500多个人 导到临时表里 然后联查。
我想寻求不需要导临时表的方法