當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


MySQL UNION用法及代碼示例


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 語句的結果已合並為一個結果集。這樣我們就可以同時看到studentsprofessors表中的記錄。

注意

默認情況下,重複項將從並集中刪除。( UNION DISTINCTUNION 相同)。 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 語句返回三列 fnamelnameusername 而第二個 SELECT 語句僅返回兩列 fnamelname

相關用法


注:本文由純淨天空篩選整理自Arthur Yanagisawa大神的英文原創作品 MySQL | UNION。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。