组合查询
大多数SQL只返回单条SELECT语句,但有些SQL语句允许从多条SELECT中查询结果并返回,称为组合查询。两种情况需要用到:
在一个查询中从不同的表返回结构数据
对一个表执行多个查询,按一个查询返回数据
创建组合查询
UNION函数放在各条语句之间
例如:
SELECT cust_name,cust_contact,cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name,cust_contact,cust_email
FROM Customers
WHERE cust_name='Fun4ALL';
可以看到,UNION非常容易使用,但是使用时有规则。
1.UNION必须由两条或者以上的SELECT组成,语句之间用UNION分隔,三个SELECT语句就用两个UNION
2.UNION的每个查询必须包含相同的列、表达式或者聚集函数
3.列数据类型必须兼容
如果UNION的SELECT的列名不同,会返回第一个列名。
包含或取消重复的行
UNION语句会自动去除重复的行,如果想返回所有的行,需要使用UNION ALL
对组合查询结果排序
SELECT语句的输出用ORDER BY字句排序,在用UNION组合查询时,只能用一条ORDER BY字句,必须位于最后一条SELECT语句之后。
SELECT cust_name,cust_contact,cust_email
FROM Customers
WHERE cust_state IN ('IL','IN','MI')
UNION
SELECT cust_name,cust_contact,cust_email
FROM Customers
WHERE cust_name='Fun4ALL'
ORDER BY cust_name,cust_state;