当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。