sql中exists,Intersect ,union 与union All的用法

本文深入探讨了SQLServer中EXCEPT和INTERSECT的使用方法,通过示例展示了如何在查询中筛选出特定条件的数据。重点区分了EXCEPT用于找出集合间的不重复部分,而INTERSECT则用于找出共有的记录。并通过实践操作验证了语法应用。

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

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

就是两个集中不重复的部分。例如
SELECT * FROM A
EXCEPT
SELECT * FROM B
这个的意思是,凡是不出现在B表中的A表的行

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

就是两个集中共同的部分。例如
SELECT * FROM A
INTERSECT
SELECT * FROM B
这个的意思是,同时出现在A和B中的记录

测试如下:

[c-sharp]  view plain copy
  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  

 

 

 

 

union 与union All的区别

--并集UNION
--UNION与UNION ALL的区别是: union会删除重复值,也就是说A和B中重复的行,最终只会出现一次,而union all则会保留重复行。
SELECT * FROM t1
 UNION
 SELECT * FROM t2
 
SELECT * FROM t1
 UNION  all
 SELECT * FROM t2

 

转载于:https://www.cnblogs.com/panmy/p/5152989.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值