可以用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将它们的结果组合成单个结果集。所需要做的只是给出每条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);
作为参考,这里给出使用WHERE子句的相同查询。
SELECT vend_id,prod_id,prod_price
FROM products
WHERE prod_price<=5
OR vend_in IN(1001,1002);
在这个简单的例子中,使用UNION可能比使用WHERE子句更为复杂。但对于更复杂的过滤条件,或者从多个表中检索数据的情形,使用UNION可能会使处理更简单。
UNION中的每个查询必须包含相同的列、表达式或聚集函数,不过各个列不需要以相同的次序列出。列的数据类型必须兼容。
UNION会从查询结果集中自动去除重复的行。如果想返回所有匹配行,可以使用UNION ALL而不是UNION。
在用UNION组合查询时,只能使用一条ORDER BY子句,它必须出现在最后一条SELECT语句之后。