请注意,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
|
Zhang,
Hua
|
02
|
Wang,
Wei
|
03
|
Carter,
Thomas
|
04
|
Yang,
Ming
|
Employees_USA:
E_ID
|
E_Name
|
01
|
Adams,
John
|
02
|
Bush,
George
|
03
|
Carter,
Thomas
|
04
|
Gates,
Bill
|
使用 UNION 命令
实例
列出所有在中国和美国的不同的雇员名:
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
ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。
SQL Statement 1
UNION ALL
SQL Statement 2
使用 UNION ALL 命令
实例:
列出在中国和美国的所有的雇员:
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
|