所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算。通过集合运算,可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。像这样用来进行集合运算的运算符称为集合运算符。
集合运算的注意事项:
- 作为运算对象的记录的列数必须相同
- 作为运算对象的记录中列的类型必须一致
- 可以使用任何SELECT语句,但ORDER BY子句只能在最后使用一次
- 集合运算符会除去重复的记录(除非使用ALL关键字)
一、表的加法——UNION
UNION是获得两张结构相同的表的并集数据。
-- 使用UNION对表进行加法运算
SELECT product_id, product_name FROM Product
UNION
SELECT product_id, product_name FROM Product2;
代码查询结果包含了两张表中的全部商品,如下图:
使用UNION对表进行加法(并集)运算的图示
在 UNION 的结果中保留重复行的语法,只需要在 UNION 后面添加 ALL 关键字就可以了
-- 保留重复行
SELECT product_id, product_name FROM Product
UNION ALL
SELECT product_id, product_name FROM Product2;

二、选取表中公共部分——INTERSECT
选取两个记录集合中公共部分即交集,使用INTERSECT关键字
-- 使用INTERSECT选取出表中公共部分
SELECT product_id, product_name FROM Product
INTERSECT
SELECT product_id, product_name FROM Product2
ORDER BY product_id; -- order by排序放在最后进行一次
查询结果:
结果中只包含两张表中记录的公共部分,如下图:
注: 希望保留重复行时同样需要使用INTERSECT ALL
三、记录的减法——EXCEPT
-- 使用EXCEPT对记录进行减法运算
SELECT product_id, product_name FROM Product
EXCEPT
SELECT product_id, product_name FROM Product2
ORDER BY product_id;

EXCEPT 有一点与 UNION 和 INTERSECT 不同,需要注意一下。那就是在减法运算中减数和被减数的位置不同,所得到的结果也不相同。4 + 2 和 2 + 4 的结果相同,但是 4 - 2 和 2 - 4 的结果却不一样。两个表调换位置得到的结果是不同的
版权声明:本文为weixin_37714766原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。