SQL Server 中关于EXCEPT和INTERSECT的用法

本文详细介绍了SQLServer中的EXCEPT和INTERSECT用法,包括其语法、优先级以及如何在实际场景中应用。通过具体代码示例展示了如何使用这些操作符来筛选和比较数据集。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

熟练使用SQL Server中的各种用法会给查询带来很多方便。今天就介绍一下EXCEPT和INTERSECT。注意此语法仅在SQL Server 2005及以上版本支持。

EXCEPT是指在第一个集合中存在,但是不存在于第二个集合中的数据。

INTERSECT是指在两个集合中都存在的数据。

测试如下:

[c-sharp] view plain copy print ?
  1. create table t1(id int,mark char(2)) 
  2. go 
  3. create table t2(id int,mark char(2)) 
  4. go 
  5. insert into t1 
  6.     select 1,'t1' union all 
  7.     select 2,'t2' union all 
  8.     select 3,'t3' union all 
  9.     select 4,'t4' 
  10. go 
  11. insert into t2 
  12.     select 2,'t2' union all 
  13.     select 3,'m3' union all 
  14.     select 5,'m5' union all 
  15.     select 6,'t6' 
  16. go 
  17. select * from t1 
  18. EXCEPT 
  19. select * from t2 
  20. go 
  21. select * from t1 
  22. INTERSECT 
  23. select * from t2 
  24. go 
  25.  
  26. --EXCEPT结果集为 
  27. --1 t1 
  28. --3 t3 
  29. --4 t4 
  30.  
  31. --INTERSECT结果集为 
  32. --2 t2 

EXCEPT和INTERSECT的优先级:

为了测试它们之间的优先级,运行下面的测试代码:

[c-sharp] view plain copy print ?
  1. create table t3(int id,mark char(2)) 
  2. go 
  3. insert into t3 
  4.     select 3,'t3' union all 
  5.     select 3,'r3' union all 
  6.     select 5,'m5' union all 
  7.     select 5,'r5' union all 
  8.     select 7,'b7' union all 
  9.     select 8,'b8' 
  10. go 
  11. select * from t1 
  12. EXCEPT 
  13. select * from t2 
  14. INTERSECT 
  15. select * from t3 
  16.  
  17. --运行结果 
  18. --1 t1 
  19. --2 t2 
  20. --3 t3 
  21. --4 t4 

为什么会出现如上结果呢,请看下面的执行计划:

ExceptIntersect

原来t2和t3先进行的INTERSECT运算,得出5 m5结果集,再和t1进行EXCEPT运算。

如需转载,请注明本文原创自优快云 TJVictor专栏:http://blog.youkuaiyun.com/tjvictor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值