UNION 和 UNION ALL操作符用于合并两个或多个 SELECT 语句的结果集(将两个或更多查询的结果组合为单个结果集),该结果集包含联合查询中的所有查询的全部行。另外,结果集中的列名总是等于 UNION 或 UNION ALL中第一个 SELECT 语句中的列名。使用 UNION 或 UNION ALL组合两个查询的结果集的两个基本规则是:
1 、 所有查询中的列数和列的顺序必须相同。
2 、 数据类型必须兼容。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION 语法:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2;
SQL UNION ALL 语法:
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2;
例1:列出所有在中国和美国的不同的雇员名
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA;
E_Name |
Zhang, Hua |
Wang, Wei |
Carter, Thomas |
Yang, Ming |
Adams, John |
Bush, George |
Gates, Bill |
注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
例2:列出在中国和美国的所有的雇员
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA;
E_Name |
Zhang, Hua |
Wang, Wei |
Carter, Thomas |
Yang, Ming |
Adams, John |
Bush, George |
Carter, Thomas |
Gates, Bill |
文章出自:百度百科