1、组合查询
SQL允许执行多个查询(多条SQL语句),并将结果作为一个查询结果集返回。这些组合查询称为并或复合查询。
主要有两种情况需要使用组合查询:
1、在一个查询中从不同的表返回结构数据
2、对一个表执行多个查询,按一个查询返回数据
注意:
1、组合相同表的两个查询所完成的工作与具有多个WHERE子句条件的一个查询完成的工作相同。
2、创建组合查询
可用UNION操作符来组合数条SQL查询。利用UNION,可给出多条SELECT语句,将他们的结果组合成一个结果集。
2.1、使用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'
#这条语句由面前的两条SELECT语句组成,之前用UNION关键字分隔。UNION指示DBMS执行这两条SELECT语句,并把输出组合成一个查询结果集
2.2、UNION规则
- UNION必须用两条或两条以上的SELECT语句组合,语句之间用关键字UNION分隔。
- UNION中的每个查询必须包含相同的列,表达式或聚集函数(不过,各个列不需要以相同的次序列出)
- 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含转换的类型
2.3、包含或取消重复的行
使用UNION时,重复的行会被自动取消,这是UNION的默认行为,如果愿意也可以改变他。事实上,如果想返回所有的行匹配,可使用UNION ALL而不是UNION
2.4、对组合查询结果排序
SELECT语句的输出用order by子句排序。再用union组合查询时,只能使用一条order by子句,他必须位于最后一条select语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分