联合查询Union,Intersect,Except用法

Union  
AUB的关系,当两个表数据集相同时,只保留一个
---UNION  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
UNION  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
A  
B  
C  
D  
E  

Union All
 当遇到两者相同时,全部保留
---UNION ALL  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
UNION ALL  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
A  
B  
B  
D  
E  
A  
A  
B  
B  
C 
Intersect 
A或B的关系,查寻两个数据集里都包含的

---INTERSECT  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
INTERSECT  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
A  
B  
---INTERSECT ALL  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
INTERSECT ALL  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
A  
B  
B  
Except
第一个表中有而第二个表中没有的数据
---EXCEPT  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
EXCEPT  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
C 
Except ALL
两个表中都不重复的
--EXCEPT ALL  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
EXCEPT ALL  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
A  
C  
大家对比一下它们之间的结果就可以看出它们之间的区别,不过有两个问题需要注意:
1UNIONINTERSECT 两别集合可以互换的,但是EXCEPT 互换将有不同的结果,如下:
[c-sharp]view plaincopyprint?
---语句1  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
EXCEPT  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
   
---结果:  
C  
   
   
---语句2  
VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
EXCEPT  
VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
   
---结果:  
D  
E 

 

posted @ 2015-10-09 22:18  Sam萨姆  阅读(410)  评论(0)    收藏  举报