繁体   English   中英

在不使用“NOT”关键字的情况下,从 #tbl1 中获取所有不在 #tbl2 中的记录

[英]Fetch all records from #tbl1 which are not in #tbl2 without use of 'NOT' keyword

  • 这里我们有两个表(#tbl1 和 #tbl2)

tbl1 记录

Id  Name
---------
1  Durgesh
2  Ashish
3  Ramesh
4  Steve
5  Pradeep

tbl2 记录

Id  Name
---------
2  Ashish
5  Pradeep

结果应在不使用“NOT”关键字的情况下给出

Id  Name
---------
1  Durgesh
3  Ramesh
4  Steve

使用以下代码:

SELECT Id,Name FROM #tbl1 
EXCEPT
SELECT Id,Name FROM #tbl2

上面的代码使用 EXCEPT 关键字来查找结果。 此查询在 SQL Server 中进行了测试。

select A.id,A.name
from #tbl1 A
left outer join #tbl2 B on A.id = B.id
where B.id is null

您可以使用EXISTS

SELECT t1.*
FROM #tbl1 t1
WHERE EXISTS (SELECT 1 FROM #tbl2 t2 WHERE t2.id <> t1.id);

一些 DBMS 支持横向 JOIN :

SELECT t1.*
FROM #tbl1 t1 OUTER APPLY
     ( SELECT T2.*
       FROM #tbl2 t2
       WHERE t2.id = t.id
     ) t2
WHERE t2.id IS NULL;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM