MySQL UNION ALL运算符
时间:2019-02-04 12:52:26 来源:igfitidea点击:
MySQL UNION ALL运算符用于合并2个或更多SELECT语句的结果集。不删除返回结果集中的重复行。
UNION操作符中的每个SELECT语句必须在结果集中具有相同数量的字段(并且字段的数据类型相似即能够相互转换)。
语法
MySQL中UNION ALL运算符的语法为:
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运算符的示例,该运算符
SELECT supplier_id FROM suppliers UNION ALL SELECT supplier_id FROM orders;
从多个SELECT语句返回一个字段(并且两个字段都具有相同的数据类型), 将不会删除结果集中的重复行。
示例-使用ORDER BY对合并集进行排序
MySQL UNION ALL运算符可以使用ORDER BY子句对运算符的结果进行排序。
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列进行排序。
当然你也可以使用别名后根据别名排序。
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;