SQL UNION

SQL UNION

正文,操作符,使用 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 語句中的列名。

使用 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

命令

實例

列出在中國和美國的所有的雇員:
SELECT E_Name FROM Employees_ChinaUNION ALLSELECT E_Name FROM Employees_USA

結果

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill
在2個資料庫中用UNION操作時可能出現定序不同的情況
例如A資料庫定序是Latin1_General_CI_AS
B的資料庫定序是Chinese_Taiwan_Stroke_CI_AS
select distinct(dep_name) as dep_name from A.dbo.gv_ams_equipment
union select distinct(process_name) as dep_name FROM B.[dbo].[plc_info] order by dep_name
出現錯誤:
Cannot resolve the collation conflict between "Chinese_Taiwan_Stroke_CI_AS" and "Latin1_General_CI_AS" in the UNION operation
解決辦法:在SQL語句中加上COLLATE轉換定序
select distinct(dep_name) collate Chinese_Taiwan_Stroke_CI_AI as dep_name from A.dbo.gv_ams_equipment
union select distinct(process_name) as dep_name FROM B.[dbo].[plc_info] order by dep_name

相關詞條

熱門詞條

聯絡我們