top
Loading...
SQL UNION 操作符

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 操作符選取不同的值。如果允許重復的值,請使用 UNION ALL。

SQL UNION ALL 語法

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

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


演示數據庫

在本教程中,我們將使用 RUNOOB 樣本數據庫。

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

mysql> SELECT * FROM Websites;
+----+--------------+---------------------------+-------+---------+
| id | name         | url                       | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA     |
| 2  | 淘寶          | https://www.taobao.com/   | 13    | CN      |
| 3  | 教程      | http://www.sharebody.com/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 20    | CN      |
| 5  | Facebook     | https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+---------------------------+-------+---------+

下面是 "apps" APP 的數據:

mysql> SELECT * FROM apps;
+----+------------+-------------------------+---------+
| id | app_name   | url                     | country |
+----+------------+-------------------------+---------+
|  1 | QQ APP     | http://im.qq.com/       | CN      |
|  2 | 微博 APP | http://weibo.com/       | CN      |
|  3 | 淘寶 APP | https://www.taobao.com/ | CN      |
+----+------------+-------------------------+---------+
3 rows in set (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 輸出結果如下:

北斗有巢氏 有巢氏北斗