UNION 將兩個或多個 SELECT 的結果集合併,預設移除重複列。各 SELECT 必須具備相同欄位數、相容資料類型、相同欄位順序。
SELECT column_name(s) FROM table1 UNION SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1 UNION ALL SELECT column_name(s) FROM table2;
注意:結果集欄位名稱以第一個 SELECT 為準。
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘寶 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鳥教程 | https://www.runoob.com/ | 4689 | CN | | 4 | 微博 | https://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow| https://stackoverflow.com/ | 0 | IND | +----+--------------+---------------------------+-------+---------+
+----+------------+-------------------------+---------+ | id | app_name | url | country | +----+------------+-------------------------+---------+ | 1 | QQ APP | https://im.qq.com/ | CN | | 2 | 微博 APP | https://weibo.com/ | CN | | 3 | 淘寶 APP | https://www.taobao.com/ | CN | +----+------------+-------------------------+---------+
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;
輸出結果(去重後):

解析:Websites 有 USA、CN、IND;apps 全為 CN。UNION 合併後僅保留 USA、CN、IND 三個唯一值。
SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;
輸出結果:

此時 CN 出現多次,反映兩表資料分布。
SELECT country, name FROM Websites WHERE country = 'CN' UNION ALL SELECT country, app_name FROM apps WHERE country = 'CN' ORDER BY country;
輸出結果:

AS 統一別名;類型不同時需 CAST 轉換。SELECT 之後,作用於整個合併結果。