SQL UNION 操作符

SQL UNION 操作符合併兩個或多個 SELECT 語句的結果。

SQL UNION 操作符

UNION 操作符用於合併兩個或多個 SELECT 語句的結果集。

請注意,UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的數據類型。同時,每個 SELECT語句中的列的順序必須相同。

SQL UNION 語法

SELECT column_name(s) FROM table1

UNION

SELECT column_name(s) FROM table2;

註釋:默認地,UNION 操作符選取不同的值。如果允許重複的值,請使用 UNIONALL。

SQL UNION ALL 語法

Advertisements

SELECT column_name(s) FROM table1

UNION ALL

SELECT column_name(s) FROM table2;

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

演示資料庫

我們將使用 RUNOOB 樣本資料庫。

下面是選自 "Websites" 表的數據:

+----+--------------+---------------------------+-------+---------+|id | name | url | alexa | country|+----+--------------+---------------------------+-------+---------+|1 | Google | https://www.google.cm/ | 1 | USA || 2 | 淘寶 |https://www.taobao.com/ | 13 | CN || 3 | 菜鳥教程 |http://www.runoob.com/ | 4689 | CN || 4 | 微博 | http://weibo.com/ |20 | CN || 5 | Facebook | https://www.facebook.com/ | 3 | USA || 7| stackoverflow | http://stackoverflow.com/ | 0 | IND|+----+---------------+---------------------------+-------+---------+

Advertisements

下面是 "apps" APP 的數據:

mysql> SELECT * FROMapps;+----+------------+-------------------------+---------+| id |app_name | url | country|+----+------------+-------------------------+---------+| 1 | QQAPP | http://im.qq.com/ | CN || 2 | 微博 APP | http://weibo.com/ | CN|| 3 | 淘寶 APP | https://www.taobao.com/ | CN|+----+------------+-------------------------+---------+3 rows inset (0.00 sec)

SQL UNION 實例

下面的 SQL 語句從 "Websites" 和 "apps"表中選取所有不同的country(只有不同的值):

實例

SELECT country FROM Websites

UNION

SELECT country FROM apps

ORDER BY country;

執行以上 SQL 輸出結果如下:

註釋:UNION不能用於列出兩個表中所有的country。如果一些網站和APP來自同一個國家,每個國家只會列出一次。UNION只會選取不同的值。請使用 UNION ALL 來選取重複的值!

SQL UNION ALL 實例

下面的 SQL 語句使用 UNION ALL 從 "Websites" 和 "apps"表中選取所有的country(也有重複的值):

實例

SELECT country FROM Websites

UNION ALL

SELECT country FROM apps

ORDER BY country;

執行以上 SQL 輸出結果如下:

帶有 WHERE 的 SQL UNION ALL

下面的 SQL 語句使用 UNION ALL 從 "Websites" 和 "apps"表中選取所有的中國(CN)的數據(也有重複的值):

實例

SELECT country, name FROM Websites

WHERE country='CN'

UNION ALL

SELECT country, app_name FROM apps

WHERE country='CN'

ORDER BY country;

執行以上 SQL 輸出結果如下:

如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!

Advertisements

你可能會喜歡