MySQL基礎知識——UNION

UNION的做用數據庫

UNION運算符用於組合兩個或更多SELECT語句的結果集。ide

UNION使用前提
UNION中的每一個SELECT語句必須具備相同的列數3d

  • 這些列的數據類型必須兼容:類型沒必要徹底相同,可是必須能夠隱式轉換。code

  • 每一個SELECT語句中的列也必須以相同的順序排列

UNION 語法
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;blog

註釋:默認狀況下,UNION 運算符選擇一個不一樣的值。若是容許重複值,請使用 UNION ALL。排序


UNION ALL 語法

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;it

※ 註釋:UNION結果集中的列名老是等於UNION中第一個SELECT語句中的列名。table

示例數據庫
如下是"Customers" 表中的數據:class

MySQL基礎知識——UNION
選自 "Suppliers" 表的數據:基礎

MySQL基礎知識——UNION

UNION 實例
如下SQL語句從 "Customers" 和"Suppliers" 表中選擇全部不一樣的城市(只有不一樣的值):

實例
SELECT 城市 FROM Customers
UNION
SELECT 城市 FROM Suppliers

結果:

MySQL基礎知識——UNION

※ 註釋:UNION具備排除重複記錄行的功能。若是一些客戶和供應商來自同一個城市,每一個城市將只被列入一個列表。UNION將只選擇不一樣的值,即會排除重複數據只保留一個。請使用UNION ALL選擇重複值!

UNION ALL 實例
如下SQL語句使用 UNION ALL 從 "Customers"和"Suppliers" 表中選擇全部城市(也是重複的值):

實例

SELECT 城市 FROM Customers
UNION ALL
SELECT 城市 FROM Suppliers

結果:

MySQL基礎知識——UNION

帶有 WHERE 的UNION ALL
如下SQL語句使用UNIONALL從"Customers"和 "Suppliers" 表中選擇全部上海市的城市(也是重複數值):

實例

SELECT 城市, 省份 FROM Customers
WHERE 省份='上海市'
UNION ALL
SELECT 城市, 省份 FROM Suppliers
WHERE 省份='上海市'

結果:

MySQL基礎知識——UNION

帶有WHERE的UNION
如下SQL語句從「客戶」和「供應商」中選擇全部不一樣的上海城市(只有不一樣的值):

SELECT 城市, 省份 FROM Customers
WHERE 省份='上海市'
UNION
SELECT 城市, 省份 FROM Suppliers
WHERE 省份='上海市'

結果:

MySQL基礎知識——UNION

另外一個UNION示例
如下SQL語句列出了全部客戶和供應商所在的城市和省份:

SELECT '客戶姓名' As Type,城市, 省份
FROM Customers
UNION
SELECT '供應商名稱',城市, 省份
FROM Suppliers;

結果:

MySQL基礎知識——UNION

帶有ORDER BY的UINON

如下SQL語句列出了全部客戶和供應商所在的城市和省份,而且對省份進行排序:

SELECT '客戶姓名' As Type,城市, 省份
FROM Customers
UNION 
SELECT '供應商名稱',城市, 省份
FROM Suppliers
ORDER BY `省份`

結果爲:

MySQL基礎知識——UNION

注意:UNION和UNION ALL的ORDER BY子句要寫在最後一條SELECT語句後面,雖然ORDER BY彷佛只是最後一條SELECT語句的組成部分,但實際上MySQL將用它來排序全部SELECT語句返回的全部結果 。

相關文章
相關標籤/搜索