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