UNION, INTERSECT, EXCEPT

这几个关键字是用来操作集合的。UNION用来求两个集合的并集,INTERSECT用来求两个集合的交集,EXCEPT用来求在第一个集合中存在,而在第二个集合中不存在的记录。每个关键字后面都可以接ALL(UNION ALL, INTERSECT ALL,  EXCEPT ALL),如果不接ALL,操作集合将会去掉重复值,下面我们通过一个例子来对比一下它们直接的不同。

[c-sharp]  view plain copy print ?
  1. ---UNION  
  2. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  3. UNION  
  4. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  5.    
  6. ---结果:  
  7. A  
  8. B  
  9. C  
  10. D  
  11. E  
  12.    
  13.    
  14. ---UNION ALL  
  15. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  16. UNION ALL  
  17. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  18.    
  19. ---结果:  
  20. A  
  21. B  
  22. B  
  23. D  
  24. E  
  25. A  
  26. A  
  27. B  
  28. B  
  29. C  
  30.    
  31.    
  32. ---INTERSECT  
  33. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  34. INTERSECT  
  35. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  36.    
  37. ---结果:  
  38. A  
  39. B  
  40.    
  41.    
  42. ---INTERSECT ALL  
  43. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  44. INTERSECT ALL  
  45. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  46.    
  47. ---结果:  
  48. A  
  49. B  
  50. B  
  51.    
  52.    
  53. ---EXCEPT  
  54. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  55. EXCEPT  
  56. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  57.    
  58. ---结果:  
  59. C  
  60.    
  61.    
  62. ---EXCEPT ALL  
  63. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  64. EXCEPT ALL  
  65. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  66.    
  67. ---结果:  
  68. A  
  69. C  
 

大家对比一下它们之间的结果就可以看出它们之间的区别,不过有两个问题需要注意:

1、UNION 和 INTERSECT 两别集合可以互换的,但是EXCEPT 互换将有不同的结果,如下:

[c-sharp] view plain copy print ?
  1. ---语句1  
  2. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  3. EXCEPT  
  4. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  5.    
  6. ---结果:  
  7. C  
  8.    
  9.    
  10. ---语句2  
  11. VALUES ('A'), ('B'), ('B'), ('D'), ('E')  
  12. EXCEPT  
  13. VALUES ('A'), ('A'), ('B'), ('B'), ('C')  
  14.    
  15. ---结果:  
  16. D  
  17. E  

 

2、注意它们之间的优先级,EXCEPT 的优先级要高于 UNION 和 INTERSECT,一般情况下如果多个关键字混合使用最好使用括号。

---更多参见:DB2 SQL 精萃

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值