MySQL 的 UNION 子句將多個 SELECT 語句的結果合並到一個結果集中。
為了對表執行UNION,它們必須首先滿足以下條件:
• 相同的列數
• 相應的列必須具有兼容的數據類型
用法
SELECT column(s) FROM table1
UNION
SELECT column(s) FROM table2;
例子
考慮下表有關一些學生的信息:
| 
 student_id  | 
 名稱  | 
 名字  | 
 day_enrolled  | 
 年齡  | 
 用戶名  | 
|---|---|---|---|---|---|
| 
 1  | 
 Sky  | 
 Towner  | 
 2015-12-03  | 
 17  | 
 stowner1  | 
| 
 2  | 
 Ben  | 
 Davis  | 
 2016-04-20  | 
 19  | 
 bdavis2  | 
| 
 3  | 
 Travis  | 
 Apple  | 
 2018-08-14  | 
 18  | 
 tapple3  | 
| 
 4  | 
 Arthur  | 
 David  | 
 2016-04-01  | 
 16  | 
 adavid4  | 
| 
 5  | 
 Benjamin  | 
 Town  | 
 2014-01-01  | 
 17  | 
 btown5  | 
可以使用此處的代碼創建上述示例表。
另請考慮下表有關一些教授的信息:
| 
 professor_id  | 
 名稱  | 
 名字  | 
 day_hired  | 
 年齡  | 
 用戶名  | 
|---|---|---|---|---|---|
| 
 1  | 
 Tom  | 
 Willox  | 
 2012-11-03  | 
 47  | 
 twillox1  | 
| 
 2  | 
 Ralph  | 
 Skeen  | 
 2009-07-30  | 
 39  | 
 rskeen2  | 
| 
 3  | 
 Hyun  | 
 Lee  | 
 2014-02-21  | 
 32  | 
 hlee3  | 
| 
 4  | 
 Bryce  | 
 Miller  | 
 2004-10-01  | 
 53  | 
 bmiller4  | 
可以使用此處的代碼創建上述示例表。
基本用法
返回學校所有學生和教授的姓名列表:
SELECT fname, lname FROM students
UNION
SELECT fname, lname FROM professors;
+----------+--------+
| fname    | lname  |
+----------+--------+
| Sky      | Towner |
| Ben      | Davis  |
| Travis   | Apple  |
| Arthur   | David  |
| Benjamin | Town   |
| Tom      | Willox |
| Ralph    | Skeen  |
| Hyun     | Lee    |
| Bryce    | Miller |
+----------+--------+
我們可以看到各個 SELECT 語句的結果已合並為一個結果集。這樣我們就可以同時看到students和professors表中的記錄。
注意
默認情況下,重複項將從並集中刪除。( UNION DISTINCT 與 UNION 相同)。 UNION ALL 將允許重複。
不同的列數
僅當涉及的 SELECT 語句返回相同數量的列時,我們才能執行 UNION:
SELECT fname, lname, username FROM students
UNION
SELECT fname, lname FROM professors;
ERROR 1222 (21000): The used SELECT statements have a different number of columns
這裏我們得到一個錯誤,因為第一個 SELECT 語句返回三列 fname 、 lname 、 username 而第二個 SELECT 語句僅返回兩列 fname 和 lname 。
相關用法
- MySQL UNIX_TIMESTAMP()用法及代碼示例
 - MySQL UNIX_TIMESTAMP方法用法及代碼示例
 - MySQL UNHEX()用法及代碼示例
 - MySQL UNCOMPRESSED_LENGTH( )用法及代碼示例
 - MySQL UNHEX方法用法及代碼示例
 - MySQL UNCOMPRESS( )用法及代碼示例
 - MySQL UCASE方法用法及代碼示例
 - MySQL UPPER方法用法及代碼示例
 - MySQL UTC_DATE()用法及代碼示例
 - MySQL UPPER()用法及代碼示例
 - MySQL UUID_SHORT()用法及代碼示例
 - MySQL UPDATE用法及代碼示例
 - MySQL UTC_DATE方法用法及代碼示例
 - MySQL UCASE()用法及代碼示例
 - MySQL USER( )用法及代碼示例
 - MySQL UTC_TIME()用法及代碼示例
 - MySQL UTC_TIME方法用法及代碼示例
 - MySQL UUID()用法及代碼示例
 - MySQL UTC_TIMESTAMP方法用法及代碼示例
 - MySQL UTC_TIMESTAMP()用法及代碼示例
 - MySQL ROUND()用法及代碼示例
 - MySQL REPEAT()用法及代碼示例
 - MySQL POWER()用法及代碼示例
 - MySQL LEAD() and LAG()用法及代碼示例
 - MySQL IS_IPV4()用法及代碼示例
 
注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | UNION。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
