MySQL基礎知識——UNION
點擊關注上方“SQL數(shù)據(jù)庫開發(fā)”,
設為“置頂或星標”,第一時間送達干貨
UNION的作用
UNION運算符用于組合兩個或更多SELECT語句的結果集。
UNION使用前提
UNION中的每個SELECT語句必須具有相同的列數(shù)
這些列的數(shù)據(jù)類型必須兼容:類型不必完全相同,但是必須可以隱式轉換。
每個SELECT語句中的列也必須以相同的順序排列
UNION 語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
注釋:默認情況下,UNION 運算符選擇一個不同的值。如果允許重復值,請使用 UNION ALL。
UNION ALL 語法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
※ 注釋:UNION結果集中的列名總是等于UNION中第一個SELECT語句中的列名。
示例數(shù)據(jù)庫
以下是"Customers"?表中的數(shù)據(jù):

選自 "Suppliers" 表的數(shù)據(jù):

UNION 實例
以下SQL語句從?"Customers"?和"Suppliers"?表中選擇所有不同的城市(只有不同的值):
實例
SELECT 城市 FROM Customers
UNION
SELECT 城市 FROM Suppliers結果:

※ 注釋:UNION具有排除重復記錄行的功能。如果一些客戶和供應商來自同一個城市,每個城市將只被列入一個列表。UNION將只選擇不同的值,即會排除重復數(shù)據(jù)只保留一個。請使用UNION ALL選擇重復值!
UNION ALL 實例
以下SQL語句使用 UNION ALL 從?"Customers"和"Suppliers"?表中選擇所有城市(也是重復的值):
實例
SELECT 城市 FROM Customers
UNION ALL
SELECT 城市 FROM Suppliers結果:

帶有 WHERE 的UNION ALL
以下SQL語句使用UNIONALL從"Customers"和?"Suppliers"?表中選擇所有上海市的城市(也是重復數(shù)值):
實例
SELECT 城市, 省份 FROM Customers
WHERE 省份='上海市'
UNION ALL
SELECT 城市, 省份 FROM Suppliers
WHERE 省份='上海市'結果:

帶有WHERE的UNION
以下SQL語句從“客戶”和“供應商”中選擇所有不同的上海城市(只有不同的值):
SELECT 城市, 省份 FROM Customers
WHERE 省份='上海市'
UNION
SELECT 城市, 省份 FROM Suppliers
WHERE 省份='上海市'結果:

另一個UNION示例
以下SQL語句列出了所有客戶和供應商所在的城市和省份:
SELECT '客戶姓名' As Type,城市, 省份
FROM Customers
UNION
SELECT '供應商名稱',城市, 省份
FROM Suppliers;結果:

帶有ORDER BY的UINON?
以下SQL語句列出了所有客戶和供應商所在的城市和省份,并且對省份進行排序:
SELECT?'客戶姓名'?As?Type,城市, 省份
FROM?Customers
UNION?
SELECT?'供應商名稱',城市, 省份
FROM?Suppliers
ORDER?BY?`省份`結果為:

注意:UNION和UNION ALL的ORDER BY子句要寫在最后一條SELECT語句后面,雖然ORDER BY似乎只是最后一條SELECT語句的組成部分,但實際上MySQL將用它來排序所有SELECT語句返回的所有結果?。
——End——
后臺回復關鍵字:1024,獲取一份精心整理的技術干貨 后臺回復關鍵字:進群,帶你進入高手如云的交流群。 推薦閱讀 這是一個能學到技術的公眾號,歡迎關注
點擊「閱讀原文」了解SQL訓練營
