SQL入門教學手冊login
SQL入門教學手冊
作者:php.cn  更新時間:2022-04-12 14:15:40

SQL 聯合



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 語句中的列名。


示範資料庫

在本教學中,我們將使用 php 樣本資料庫。

下面是選自"Websites" 表的資料:

+----+--------------+--- ------------------------+-------+---------+
| id | name | url                       | alexa | country |
+----+----------+------------------------------------ --------+-------+---------+
| 1  | Google       | https://www.google.cm/    | 1     | USA    | 1     | 
| 2  | 淘寶          | https://www.taobao.com/   | 13    | CN  cn/    | 4689  | CN      |
| 4  | 微博          | http://weibo.com/         | 201   https://www.facebook.com/ | 3     | USA     |
| 7  | stackoverflow | http://stackoverflow.com/ |   0 | IND     |
+----+---------------+----------- ------------------+-------+---------+

#

下面是"apps" APP 的資料:

mysql> SELECT * FROM apps;
+----+------------+ -------------------------+---------+
| id | app_name   | url                     #+----+------------+-------------------------+---- -----+
|  1 | QQ APP     | http://im.qq.com/       | CN   地 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 輸出結果如下:

#執行上述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 輸出結果如下: