EXCEPT主要是用来获取两个结果集的差;两个结果用EXCEPT链接,返回第一个结果集不在第二个结果集中的数据。INTERSECT主要是用来获取两个结果集的交集;两个结果用INTERSECT链接,返回两个结果集中的相同部分,测试数据:
--测试数据 if not object_id(N'Tempdb..#T1') is null drop table #T1 Go Create table #T1([Name] nvarchar(22)) Insert #T1 select N'张三' union all select N'李四' GO if not object_id(N'Tempdb..#T2') is null drop table #T2 Go Create table #T2([Name] nvarchar(22)) Insert #T2 select N'张三' union all select N'王五' Go --测试数据结束
EXCEPT的用法如下:
SELECT * FROM #T1 EXCEPT SELECT * FROM #T2
结果返回了#T1表中存在而#T2表中不存在的“李四”:
INTERSECT的用法:
SELECT * FROM #T1 INTERSECT SELECT * FROM #T2
结果返回了两个表中都有的张三:
灵活的使用EXCEPT、INTERSECT可以让我们更加方便快捷的实现一些功能,多加理解。