MySQL UNION运算符

时间:2019-02-04 12:52:26  来源:igfitidea点击:

MySQL UNION运算符用于合并2个或更多SELECT语句的结果集。它将删除各种SELECT语句之间的重复行。

UNION操作符中的每个SELECT语句必须在结果集中具有相同数量的字段(并且字段的数据类型相似即能够相互转换)。

语法

MySQL中UNION运算符的语法为:

SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION [DISTINCT | ALL]
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
参数说明
expression1,expression2,... expression_n希望查找的字段或计算式。
tables数据库表
WHERE conditions可选的。挑选记录时必须满足的条件。
DISTINCT可选的。从结果集中删除重复项,默认就会删除重复项。
ALL可选的。 在结果集中不删除重复项

说明

  • 两个SELECT语句中expression的数量必须相等。
  • 来自UNION运算符的第一个SELECT语句的列名用作结果集的列名。

MySQL UNION运算符示例

示例-只返回一个字段

SELECT supplier_id
FROM suppliers
UNION
SELECT supplier_id
FROM order_details;

从多个SELECT语句中返回一个字段(两个字段具有相同的数据类型):

示例-使用ORDER BY对合并集进行排序

MySQL UNION运算符可以使用ORDER BY子句对查询结果进行排序。

SELECT supplier_id, supplier_name
FROM suppliers
WHERE supplier_id <= 500
UNION
SELECT company_id, company_name
FROM companies
WHERE company_name = 'Apple'
ORDER BY 2;

在这个例子中,由于两个SELECT语句之间的列名不同,所以在ORDER BY子句中使用位置进行排序更好。即ORDER BY 2表示按照结果集中第2列进行排序。supplier_name / company_name字段位于结果集中的第2位置。