查找两个SQL DataTable之间的不匹配

时间:2017-10-18 05:47:22

标签: sql sql-server

我有两个名为tmptable1tmptable2的sql数据表 我正在尝试显示tmptable1但不在tmptable2中的数据 我写了以下查询,但显示空白结果,但我知道tmptable1中有一条记录但tmptable2没有 以下是我的问题。我在做什么。

select * from tmptable1 where name not in(select name from tmptable2 where status='active')

2 个答案:

答案 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;