总结:
- 组合查询:UNION,放在两个SELECT语句之间,如果有n个SELECT语句,则用n-1个UNION.
- 重复行也出现:UNION ALL
- 排序:ORDER BY 写在所有SELECT语句最后,只用一次。
- UNION可简化WHERE语句
- UNION适合用于查询多个表的情况下。
———————————————————————————————————————————
组合查询定义:
多个查询(多条SELECT语句)的结果集合。用并UNION,或复合查询(compound query).
适用情况:
单个查询中多个表
单个表中多个查询
使用方法:
多条SELECT语句中用UNION连接即可。有n个SELECT语句,则用n-1个UNION.
注意:使用UNION时,所有SELECT语句中选择的列必须相同(顺序可变)。
例子:
选择价格小于5的产品信息,并包括1001,1002编号的生产商生产的所有商品。
1. 价格小于5的产品信息
SELECT vend_id, prod_id, prod_price FROM products WHERE prod_price<5;
2. 1001,1002编号的生产商生产的所有商品
SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1002,1001);
3. 使用WHERE
SELECT vend_id, prod_id, prod_price FROM products
WHERE vend_id IN (1002,1001)
OR prod_price<5;
4. 使用UNION
SELECT vend_id, prod_id, prod_price FROM products Where prod_price<5
UNION
SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1002,1001);
5. 使用UNION ALL,包括重复数据行。
SELECT vend_id, prod_id, prod_price FROM products Where prod_price<5
UNION ALL
SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1002,1001);
6. 排序:ORDER BY只使用一次,用在所有SELECT语句最后
SELECT vend_id, prod_id, prod_price FROM products WHERE prod_price<5
UNION ALL
SELECT vend_id, prod_id, prod_price FROM products WHERE vend_id IN (1002,1001)
ORDER BY vend_id,prod_price;