我想从table2中找到不匹配的val记录。它也有空值
表1
id val
1 10
2 20
3 30
4 null
table2
id val
1 10
3 30
4 null
对于上面的示例,其应返回20。
答案 0 :(得分:0)
简单的存在结构在这里起作用
with tmp1 as(
select 1 id, 10 val from dual
union
select 2 id, 20 val from dual
union
select 3 id, 30 val from dual
union
select 4 id, null val from dual),
tmp2 as(
select 1 id, 10 val from dual
union
select 3 id, 30 val from dual
union
select 4 id, null val from dual)
select
tmp1.*
from
tmp1
where
not exists(
select
null
from
tmp2
where
nvl(tmp1.val,-1) = nvl(tmp2.val,-1))
答案 1 :(得分:0)
您可以使用MINUS
运算符
select id, val from table1
minus
select id, val from table2
它从上层查询中选择不在下层查询中的所有行