可UNION操作符来组合数条SQL语句。
1.使用UNION
UNION的使用很简单,所需做的只是给出每条SELECT语句,在各条语句之间放上关键字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 (1001,1002);
输出
第一条SELECT检索不高于5的所有物品,第二条SELECT使用IN找出供应商1001和1002生产的所有物品。UNION指示MySQL执行两条SELECT语句,并把输出组合成单个查询结果集。
2.包含或取消重复的行
如果分别执行以上两条SELECT语句,那么第一条SELECT返回4行,第二条返回5行,但是使用UNION组合了两条SELECT语句之后,只返回了8行而不是9行。这是UNION的默认行为,但是如果需要,也可以改变:使用UNION ALL,而不是UNION。
输入
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 (1001,1002);
输出
使用UNION ALL,MySQL不取消重复的行,因此这里出现了9行。
3.对组合查询结果排序
在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。
输入
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 (1001,1002) ORDER BY vend_id,prod_price;
输出