MySQL操作7——组合查询

组合查询

在查询时,执行多个查询(多条 SELECT 语句),并将结果作为单个查询结果集返回。
有两种基本情况,需要使用组合查询:

  • 在单个查询中从不同的表返回类似结构的数据;
  • 对单个表执行多个查询,按单个查询返回数据。

UNION关键字

UNION 的使用很简单。所需做的只是给出每条 SELECT 语句,在各条语句之间放上关键字 UNION 。
直接上例子:假如需要价格小于等于 5 的所有物品的一个列表,而且还想包括供应商 1001 和 1002 生产的所有物品(不考虑价格)。当然,可以利用 WHERE 子句来完成此工作,不过这次我们将使用 UNION 。
首先来看单条语句:





对两条语句进行组合:



作为参考,这里给出使用多条 WHERE 子句而不是使用 UNION 的相同查询:

UNION使用规则

  • UNION 必须由两条或两条以上的 SELECT 语句组成,语句之间用关键字 UNION 分隔(因此,如果组合4条 SELECT 语句,将要使用3个UNION 关键字)。
  • UNION 中的每个查询必须包含相同的列、表达式或聚集函数(不过各个列不需要以相同的次序列出)。
  • 列数据类型必须兼容:类型不必完全相同,但必须是DBMS可以隐含地转换的类型(例如,不同的数值类型或不同的日期类型)。

包含或取消重复的行

一般我们使用UNION关键字,查询结果集中会自动去除重复的行。但是如果在实际应用中需要返回匹配的所有行(输出重复的行),可以将UNION替换成UNION ALL。


对组合查询结果排序

SELECT 语句的输出用 ORDER BY 子句排序。在用 UNION 组合查询时,只能使用一条 ORDER BY 子句,它必须出现在最后一条 SELECT 语句之后。对于结果集,不存在用一种方式排序一部分,而又用另一种方式排序另一部分的情况,因此不允许使用多条 ORDER BY 子句。


你可能感兴趣的:(MySQL操作7——组合查询)