UNION 用法
假设连锁店想要增加毛利率超过 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 或者 OR 谓词
找出毛利率不足 30%或毛利率未知的商品。
SELECT *
FROM Product
WHERE sale_price < 1.3 *purchase_price
OR sale_price IS NULL
OR purchase_price IS NULL;
复制代码
SELECT *
FROM Product
WHERE sale_price < 1.3 *purchase_price
UNION
SELECT *
FROM Product
WHERE sale_price IS NULL
OR purchase_price IS NULL;
复制代码
包含重复行的集合运算 UNION ALL
SELECT product_id, product_name
FROM Product
UNION all
SELECT product_id, product_name
FROM Product1;
复制代码
商店决定对 product 表中利润低于 50% 或者 售价低于 1000 的商品提价, 请使用 UNION ALL 语句将分别满足上述两个条件的结果取并集.
SELECT *
FROM Product
WHERE sale_price < 1000
UNION
SELECT *
FROM Product
WHERE sale_price < 1.5 * purchase_price
复制代码
inner join 交集
SELECT p1.product_id, p1.product_name
FROM Product p1
INNER JOIN Product1 p2
ON p1.product_name=p2.product_name
复制代码
找出只存在于 Product 表但不存在于 Product1 表的商品。
SELECT *
FROM Product
WHERE product_name NOT IN (SELECT product_name
FROM Product1)
复制代码
其他
找出 product 和 product2 中售价高于 500 的商品的基本信息。
借助对称差的实现方式, 求 product 和 product2 的交集。
SELECT *
FROM Product
WHERE product_name IN (SELECT product_name FROM Product1)
UNION
SELECT *
FROM Product1
WHERE product_name IN (SELECT product_name FROM Product)
复制代码
评论