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

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

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

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

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

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

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

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

注意:UNION和UNION ALL的ORDER BY子句要寫在最后一條SELECT語句后面,雖然ORDER BY似乎只是最后一條SELECT語句的組成部分,但實(shí)際上MySQL將用它來排序所有SELECT語句返回的所有結(jié)果?。
——End——
后臺(tái)回復(fù)關(guān)鍵字:1024,獲取一份精心整理的技術(shù)干貨 后臺(tái)回復(fù)關(guān)鍵字:進(jìn)群,帶你進(jìn)入高手如云的交流群。 推薦閱讀
手機(jī)沒網(wǎng)了,卻還能支付,這是什么原理? 為什么阿里巴巴禁止使用存儲(chǔ)過程? 一份非常完整的 MySQL 規(guī)范,速速收藏! 數(shù)據(jù)庫中為什么不推薦使用外鍵約束
這是一個(gè)能學(xué)到技術(shù)的公眾號(hào),歡迎關(guān)注
點(diǎn)擊「閱讀原文」了解SQL訓(xùn)練營
