请稍候,加载中....

SQL 联合查询

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    |
+-----------+
| 大猿      |
| 小猿      |
| 猿大头    |
| 猿媛      |
| 猿媛      |
| 大猿      |
| 大猿      |
| 小猿      |
+-----------+

Python学习手册-