我有两个名为tmptable1
和tmptable2
的sql数据表
我正在尝试显示tmptable1
但不在tmptable2
中的数据
我写了以下查询,但显示空白结果,但我知道tmptable1
中有一条记录但tmptable2
没有
以下是我的问题。我在做什么。
select * from tmptable1 where name not in(select name from tmptable2 where status='active')
答案 0 :(得分:3)
您还可以利用EXCEPT and INTERSECT:
以下为您提供tmptable1
但不在tmptable2
中的名称:
SELECT name FROM tmptable1
EXCEPT
SELECT name FROM tmptable2
虽然这为您提供了通用名称:
SELECT name FROM tmptable1
INTERSECT
SELECT name FROM tmptable2
答案 1 :(得分:1)
一种方法是将NOT EXISTS
与相关子查询一起使用:
select *
from tmptable1 t1
where not exists (
select 1
from tmptable2 t2
where t1.name = t2.name
and t2.status = 'active'
);
或者,您可以使用LEFT JOIN
:
select t1.*
from tmptable1 t1
left join tmptable2 t2
on t1.name = t2.name
and t2.status = 'active'
where t2.name is null;