SQL UNION 语法
SQL UNION 操作符合并两个或多个 SELECT 语句的结果。
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
演示数据库
在猿变手册教程中,我们将使用 yuanbian 样本数据库。
下面是选自 "articles" 表的数据:
+----+-----------------+-----------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+-----------------+-----------+--------+---------------------+
| 1 | hadoop简介 | 大猿 | 311 | 2003-01-05 11:23:00 |
| 2 | python元类 | 小猿 | 163 | 2003-01-11 13:00:01 |
| 3 | HTML基础 | 猿大头 | 497 | 2004-03-09 12:00:00 |
| 4 | Javascript | 猿媛 | 20 | 2005-11-03 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-07 18:40:00 |
| 6 | 异步编程 | 大猿 | 3 | 2005-11-07 18:45:00 |
+----+-----------------+-----------+--------+---------------------+
下面是 "downloads" 的数据:
+----+-----------------------------+-------------------+--------+------------+
| id | title | url | author | pub_date |
+----+-----------------------------+-------------------+--------+------------+
| 1 | 快速搭建自己的web | http://******/120 | 大猿 | 2021-01-03 |
| 2 | 一分钟搞定人脸识别 | http://******/121 | 小猿 | 2021-01-03 |
+----+-----------------------------+-------------------+--------+------------+
SQL UNION 示例
下面的 SQL 语句从 "articles" 和 "downloads" 表中选取所有 “大猿”发布的资源:
select articles.title, "article" as `type`
from articles
where author='大猿'
union select downloads.title, "downloads"
from downloads
where author='大猿'
执行以上 SQL 输出结果如下:
+--------------------------+-----------+
| title | type |
+--------------------------+-----------+
| hadoop简介 | article |
| 异步编程 | article |
| 快速搭建自己的web | downloads |
+--------------------------+-----------+
注意:UNION 会过滤重复的值!
UNION 过滤重复值示例
select author
from articles
union
select author
from downloads;
输出结果
+-----------+
| author |
+-----------+
| 大猿 |
| 小猿 |
| 猿大头 |
| 猿媛 |
+-----------+
UNION ALL 语法
union all 结果将保留重复的项
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
SQL UNION ALL 示例
UNION ALL 在查询结果中保留重复值:
select author
from articles
union all
select author
from downloads
执行以上 SQL 输出结果如下:
+-----------+
| author |
+-----------+
| 大猿 |
| 小猿 |
| 猿大头 |
| 猿媛 |
| 猿媛 |
| 大猿 |
| 大猿 |
| 小猿 |
+-----------+
讨论区