SQL UNION 操作符
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結(jié)果集。
請(qǐng)注意,UNION 內(nèi)部的 SELECT 語(yǔ)句必須擁有相同數(shù)量的列。列也必須擁有相似的數(shù)據(jù)類型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同。
SQL UNION 語(yǔ)法
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
注釋:默認(rèn)地,UNION 操作符選取不同的值。如果允許重復(fù)的值,請(qǐng)使用 UNION ALL。
SQL UNION ALL 語(yǔ)法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
另外,UNION 結(jié)果集中的列名總是等于 UNION 中第一個(gè) SELECT 語(yǔ)句中的列名。
下面的例子中使用的原始表:
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 命令
實(shí)例
列出所有在中國(guó)和美國(guó)的不同的雇員名:
SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA
結(jié)果
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill
注釋:這個(gè)命令無(wú)法列出在中國(guó)和美國(guó)的所有雇員。在上面的例子中,我們有兩個(gè)名字相同的雇員,他們當(dāng)中只有一個(gè)人被列出來(lái)了。UNION 命令只會(huì)選取不同的值。
UNION ALL
UNION ALL 命令和 UNION 命令幾乎是等效的,不過(guò) UNION ALL 命令會(huì)列出所有的值。
SQL Statement 1
UNION ALL
SQL Statement 2
使用 UNION ALL 命令
實(shí)例:
列出在中國(guó)和美國(guó)的所有的雇員:
SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA
結(jié)果
E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill