not in 的效率非常低,我知道如果是一个字段not in 比较的话,
可以用外关联来解决。但是两个字段组合起来判断是不是在另外一个表中也存在的问题该怎么写呢?
比如
A表有两个字段 col1,col2(col2可能为null)
B表也有两个字段col1,col2(col2可能为null)
我要取出A表的col1 和col2组合起来在表B中没有对应记录的,该如何写sql?
现在我用not in 效率非常差:
Select *
From A t
Where (t.col1 ¦¦ Nvl(t.col2, 'NULL')) not in (
Select col1 ¦¦ Nvl(col2, 'NULL') From B )
谢谢!
可以用外关联来解决。但是两个字段组合起来判断是不是在另外一个表中也存在的问题该怎么写呢?
比如
A表有两个字段 col1,col2(col2可能为null)
B表也有两个字段col1,col2(col2可能为null)
我要取出A表的col1 和col2组合起来在表B中没有对应记录的,该如何写sql?
现在我用not in 效率非常差:
Select *
From A t
Where (t.col1 ¦¦ Nvl(t.col2, 'NULL')) not in (
Select col1 ¦¦ Nvl(col2, 'NULL') From B )
谢谢!
MINUS
SELECT * FROM B
update A(B)
set col2='123456' //不会出现的任意值
where col2 is nullselect a.* from A,B
where A.col1=B.col1(+)
and A.col2=B.col2(+)
and (B.col1||B.col2) is null //这句是取得你所需要的