在SQL UNION運算符將兩個或多個SELECT語句的結果。
在SQL UNION操作
UNION運算符用於將結果集的兩個或更多個SELECT語句結合起來。
請注意,在聯盟內每個SELECT語句都必須具有相同的列數。 列還必須具有類似的數據類型。 另外,在每個SELECT語句的列必須按相同的順序。
SQL UNION語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2 ;
Note: UNION操作符默認情況下只選擇不同的值。 要允許重複的值,請使用UNION ALL關鍵字。
SQL UNION ALL語法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2 ;
PS:在UNION的結果集的列名通常是等於在UNION的第一個SELECT語句中的列名。
演示數據庫
在本教程中,我們將使用眾所周知的Northwind示例數據庫。
下面是從選擇"Customers"表:
客戶ID | 顧客姓名 | 聯繫人姓名 | 地址 | 市 | 郵政編碼 | 國家 |
---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitucion 2222 | Mexico D.F. | 05021 | Mexico |
3 | Antonio Moreno Taqueria | Antonio Moreno | Mataderos 2312 | Mexico D.F. | 05023 | Mexico |
而從選擇"Suppliers"表:
供應商ID | 供應商名稱 | 聯繫人姓名 | 地址 | 市 | 郵政編碼 | 國家 |
---|---|---|---|---|---|---|
1 | 異國情調的液體 | 夏洛特·庫珀 | 49吉爾伯特聖 | 倫敦 | EC1 4SD | 聯合王國 |
2 | 新奧爾良印第安趣 | 雪萊·伯克 | 郵政信箱78934 | 新奧爾良 | 70117 | 美國 |
3 | 奶奶凱利的家園 | 里賈納·墨菲 | 707牛津路。 | 安阿伯 | 48104 | 美國 |
SQL UNION例
下面的SQL語句從選擇所有不同的城市(只不同的值) "Customers"和"Suppliers"表:
Note: UNION不能用於列出兩個表的所有城市。 如果幾個客戶和供應商共享同一個城市,每個城市將只列出一次。 UNION只選擇不同的值。 使用UNION ALL也選擇重複值!
SQL UNION ALL示例
下面的SQL語句使用UNION ALL從選擇所有 (重複值也)城市"Customers"和"Suppliers"表:
SQL UNION ALL隨著WHERE
下面的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;
試一試»