SQL UNION操作符
UNION操作符用于合并两个或多个SELECT语句的结果集。
请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。
SQL UNION语法
SELECT column_name(s)FROM table_name1 union SELECT column_name(s)FROM table_name2
注意:默认地,UNION操作符选取不同的值。如果允许重复的值,请使用UNION ALL。
SQL UNION ALL语法
SELECT column_name(s)FROM table_name1 UNION ALL SELECT column_name(s)FROM table_name2
另外,UNION结果集中的列名总是等于UNION中第一个SELECT语句中的列名。
下面的例子中使用的原始表:
Employees_China:
E_ID | E_Name |
---|---|
01 | 张华 |
02 | 王伟 |
03 | 卡特,托马斯 |
04 | 杨明 |
Employees_USA:
E_ID | E_Name |
---|---|
01 | 亚当斯,约翰 |
02 | 布什,乔治 |
03 | 卡特,托马斯 |
04 | 盖茨,比尔 |
使用UNION命令
实例
列出所有在中国和美国的不同的雇员名:
SELECT E_Name FROM Employees_China UNION
SELECT E_Name FROM Employees_USA
结果
E_Name |
---|
张华 |
王伟 |
卡特,托马斯 |
杨明 |
亚当斯,约翰 |
布什,乔治 |
盖茨,比尔 |
注释:这个命令无法列出在中国和美国的所有雇员在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了.UNION命令只会选取不同的值。
UNION ALL
UNION ALL命令和UNION命令几乎是等效的,不过UNION ALL命令会列出所有的值。
SQL语句1 UNION ALL SQL语句2
使用UNION ALL命令
实例:
列出在中国和美国的所有的雇员:
SELECT E_Name FROM Employees_China UNION ALL
SELECT E_Name FROM Employees_USA
结果
E_Name |
---|
张华 |
王伟 |
卡特,托马斯 |
杨明 |
亚当斯,约翰 |
布什,乔治 |
卡特,托马斯 |
盖茨,比尔 |