SQLServer中通过intersect,union,except和三个关键字对应交、并、差三种集合运算。

来源:互联网 发布:阿里云储存空间不足 编辑:程序博客网 时间:2024/05/18 14:26

SQLServer中通过intersect,union,except和三个关键字对应交、并、差三种集合运算。

他们的对应关系可以参考下面图示

测试示例:

构造A,B两个数据集

[sql] view plain copy
  1. A:1,2,3,4  
  2. B:1,2,5  
  3. WITH A AS  
  4. (SELECT '1' tno  
  5. UNION ALL SELECT  '2' UNION ALL SELECT  '3' UNION ALL SELECT  '4'   
  6. ),  
  7. AS(SELECT '1' tno  
  8. UNION ALL SELECT  '2' UNION ALL SELECT  '5')  

查询示例:

1 Union 取合集并过滤重复数据

[sql] view plain copy
  1. --1 Union 取合集并过滤重复数据  
  2. --结果显示: 1,2,3,4,5  
  3. SELECT * FROM A  
  4. UNION     
  5. SELECT * FROM B;  

2 Union all 取合集不过滤重复数据

[sql] view plain copy
  1. --2 Union all 取合集不过滤重复数据  
  2. --结果显示:1,2,3,4,1,2,5  
  3. SELECT * FROM A  
  4. UNION  all  
  5. SELECT * FROM B;  

3 Intersect 取交集(两个表中都有数据)

[sql] view plain copy
  1. --3 Intersect 取交集  
  2. --结果显示:1,2  
  3. SELECT * FROM A  
  4. Intersect    
  5. SELECT * FROM B;  

4 except 取差集(取A-B的记录)

[sql] view plain copy
  1. --4 except 取差集  
  2. --结果显示:3,4  
  3. SELECT * FROM A  
  4. except    
  5. SELECT * FROM B;  
0 0