SQL UNION 操作符合并兩個或多個 SELECT 語句的結果。
SQL UNION 操作符
UNION 操作符用于合并兩個或多個 SELECT 語句的結果集。
請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT 語句中的列的順序必須相同。
SQL UNION 語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
UNION
SELECT column_name(s) FROM table2;
注釋:默認地,UNION 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。
SQL UNION ALL 語法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
UNION ALL
SELECT column_name(s) FROM table2;
注釋:UNION 結果集中的列名總是等于 UNION 中第一個 SELECT 語句中的列名。
演示數據庫
在本教程中,我們將使用眾所周知的 Northwind 樣本數據庫。
下面是選自 "Customers" 表的數據:
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
選自 "Suppliers" 表的數據:
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA |
SQL UNION 實例
下面的 SQL 語句從 "Customers" 和 "Suppliers" 表中選取所有不同的城市(只有不同的值):
實例
SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
UNION
SELECT City FROM Suppliers
ORDER BY City;
注釋:UNION 不能用于列出兩個表中所有的城市。如果一些客戶和供應商來自同一個城市,每個城市只會列出一次。UNION 只會選取不同的值。請使用 UNION ALL 來選取重復的值!
SQL UNION ALL 實例
下面的 SQL 語句使用 UNION ALL 從 "Customers" 和 "Suppliers" 表中選取所有的城市(也有重復的值):
實例
SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
帶有 WHERE 的 SQL UNION ALL
下面的 SQL 語句使用 UNION ALL 從 "Customers" 和 "Suppliers" 表中選取所有的德國城市(也有重復的值):
實例
SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;