16.表的加减法(集合运算)

所谓集合运算,就是对满足同一规则的记录进行的加减等四则运算。通过集合运算,可以得到两张表中记录的集合或者公共记录的集合,又或者其中某张表中的记录的集合。像这样用来进行集合运算的运算符称为集合运算符。

集合运算的注意事项:

  • 作为运算对象的记录的列数必须相同
  • 作为运算对象的记录中列的类型必须一致
  • 可以使用任何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版权协议,转载请附上原文出处链接和本声明。