4.1 表的加减法
4.1.1 什么是集合运算
4.1.2 表的加法—UNION
4.1.2.1 UNION
UNION相当于是求并集的运算,可以对两张表,也可以对同一张表~~
UNION会除去重复的记录!!!
#两张表
SELECT product_id, product_name
FROM product
UNION
SELECT product_id, product_name
FROM product2;
同一张表~~
练习题:假设连锁店想要增加毛利率超过 50%或者售价低于 800 的货物的存货量, 请使用 UNION 对分别满足上述两个条件的商品的查询结果求并集.
SELECT product_id,product_name,product_type
,sale_price,purchase_price
FROM product
WHERE sale_price<800
UNION
SELECT product_id,product_name,product_type
,sale_price,purchase_price
FROM product
WHERE sale_price>1.5*purchase_price;
不使用UNION
SELECT product_id,product_name,product_type
,sale_price,purchase_price
FROM product
WHERE sale_price < 800
OR sale_price > 1.5 * purchase_price;
4.1.2.2 UNION 与 OR 谓词
确实, 对于同一个表的两个不同的筛选结果集, 使用 UNION 对两个结果集取并集, 和把两个子查询的筛选条件用 OR 谓词连接, 会得到相同的结果, 但倘若要将两个不同的表中的结果合并在一起, 就不得不使用 UNION 了,而且, 即便是对于同一张表, 有时也会出于查询效率方面的因素来使用 UNION。
练习题:分别使用 UNION 或者 OR 谓词,找出毛利率不足 30%或毛利率未知的商品.
-- 使用 OR 谓词
SELECT *
FROM product
WHERE sale_price / purchase_price < 1.3
OR sale_price / purchase_price IS NULL;
-- 使用 UNION
SELECT *
FROM product
WHERE sale_price / purchase_price < 1.3
UNION
SELECT *
FROM product
WHERE<