MySQL UNION ALL运算符


MySQL UNION ALL运算符用于合并2个或更多SELECT语句的结果集。不删除返回结果集中的重复行。

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

语法

MySQL中UNION ALL运算符的语法为:

1
2
3
4
5
6
7
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
UNION ALL
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
参数 说明
expression1,expression2,... expression_n 希望查找的字段或计算式。
tables 数据库表
WHERE conditions 可选的。挑选记录时必须满足的条件。

说明

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

MySQL UNION运算符示例

示例-返回单个字段

以下是MySQL UNION ALL运算符的示例,该运算符

1
2
3
4
5
SELECT supplier_id
FROM suppliers
UNION ALL
SELECT supplier_id
FROM orders;

从多个SELECT语句返回一个字段(并且两个字段都具有相同的数据类型), 将不会删除结果集中的重复行。

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

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

1
2
3
4
5
6
7
8
SELECT supplier_id, supplier_name
FROM suppliers
WHERE state = 'California'
UNION ALL
SELECT company_id, company_name
FROM companies
WHERE company_id > 1000
ORDER BY 2;

由于两个SELECT语句之间的列名不同,所以按照列的编号进行排序比较方便。即根据第2列进行排序。

当然你也可以使用别名后根据别名排序。

1
2
3
4
5
6
7
8
SELECT supplier_id, supplier_name as mingzi
FROM suppliers
WHERE state = 'California'
UNION ALL
SELECT company_id, company_name as mingzi
FROM companies
WHERE company_id > 1000
ORDER BY mingzi;


原文链接:https://codingdict.com/