SQL允许执行多个查询,并将结果作为单个查询结果集返回,这些组合查询通常成为并(UNION)。
有两种基本情况,其中需要使用组合查询:
上例子:
需要位于Illinois,Indiana,Michigan的所有客户的一个报表,而且还想包括所有Fun4All单位而不管位于哪个州。
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的几条规则:
UNION会从查询结果中自动去除重复的行,如果想返回所有的行,则使用UNION ALL而不是UNION。
对组合查询结果排序:
在用UNION组合查询时,只能使用一条ORDER BY语句,她必须出现在最后一条SELECT语句之后,对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条ORDER BY语句。
例:
SELECT cust_name,cust_contact,cust_email FROM Customers WHERE cust_state IN('IL','IN','MI') UNION SELECT cust_name,cust_contact,cuts_email FROM Customers WHERE cust_name = 'Fun4All' ORDER BY cust_name,cust_contact;