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
大家对比一下它们之间的结果就可以看出它们之间的区别,不过有两个问题需要注意:
1、UNION 和 INTERSECT 两别集合可以互换的,但是EXCEPT 互换将有不同的结果,如下:
- ---语句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