MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集

 更新时间:2024年04月02日 15:11:18   作者:Hello 阿月  
这篇文章主要介绍了MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

使用UNION和UNION ALL合并两个或多个SELECT语句的结果集

在MySQL中, UNIONUNION ALL 是用于合并两个或多个 SELECT 语句的结果集的操作符。

UNION 会去除结果集中的重复行,返回唯一的行,而 UNION ALL 会返回所有的行,包括重复行。

举个通用的例子

SELECT column1, column2, ...
FROM table1
WHERE condition
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition;
  • SELECT column1, column2, ...: 指定要查询的列。
  • FROM table: 指定要查询的表。
  • WHERE condition: 指定筛选条件(可选)。

注意事项:

UNION 连接的两个 SELECT 语句必须包含相同数量和类型的列,列的顺序也必须相同。

默认情况下,UNION 会去除重复的行。如果要包含重复的行,可以使用 UNION ALL

使用 UNIONUNION ALL 时,结果集的列名是由第一个 SELECT 语句中的列名决定的,因此要确保两个 SELECT 语句中的列名和类型相匹配。

举个实际的例子

假设有两个表 employees1employees2

包含相同的列结构和部分重复数据,然后使用 UNIONUNION ALL 进行查询和合并。

创建两个表并插入一些数据

-- 创建 employees1 表
CREATE TABLE employees1 (
    employee_id INT,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

-- 插入数据到 employees1 表
INSERT INTO employees1 VALUES
(1, 'John', 'Doe'),
(2, 'Jane', 'Smith'),
(3, 'Bob', 'Johnson'),
(4, 'Alice', 'Doe');

-- 创建 employees2 表
CREATE TABLE employees2 (
    employee_id INT,
    first_name VARCHAR(50),
    last_name VARCHAR(50)
);

-- 插入数据到 employees2 表,包含一些与 employees1 表重复的数据
INSERT INTO employees2 VALUES
(3, 'Bob', 'Johnson'),
(4, 'Alice', 'Doe'),
(5, 'Eva', 'Williams');

使用 UNION 合并这两个表的数据:

-- 使用 UNION 合并,去除重复行
SELECT employee_id, first_name, last_name
FROM employees1
UNION
SELECT employee_id, first_name, last_name
FROM employees2;

结果如下:

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 1           | John       | Doe       |
| 2           | Jane       | Smith     |
| 3           | Bob        | Johnson   |
| 4           | Alice      | Doe       |
| 5           | Eva        | Williams  |
+-------------+------------+-----------+

可以看到,UNION 自动去除了重复的行。

使用 UNION ALL 合并这两个表的数据:

-- 使用 UNION ALL 合并,包含重复行
SELECT employee_id, first_name, last_name
FROM employees1
UNION ALL
SELECT employee_id, first_name, last_name
FROM employees2;

结果如下:

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
| 1           | John       | Doe       |
| 2           | Jane       | Smith     |
| 3           | Bob        | Johnson   |
| 4           | Alice      | Doe       |
| 3           | Bob        | Johnson   |
| 4           | Alice      | Doe       |
| 5           | Eva        | Williams  |
+-------------+------------+-----------+

可以看到

  • UNION ALL 保留了所有行,包括重复的行。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL使用聚合函数进行单表查询

    MySQL使用聚合函数进行单表查询

    这篇文章主要介绍了MySQL使用聚合函数进行单表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 关于SQL的cast()函数解析

    关于SQL的cast()函数解析

    这篇文章主要介绍了关于SQL的cast()函数解析,CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型。CAST()函数的参数是一个表达式,它包括用AS关键字分隔的源值和目标数据类型,需要的朋友可以参考下
    2023-04-04
  • MySQL mysql-connector的具体实现

    MySQL mysql-connector的具体实现

    本文主要介绍了MySQL mysql-connector的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-11-11
  • 轻松解决MySQL忘记密码如何重置的方法

    轻松解决MySQL忘记密码如何重置的方法

    这篇文章主要为大家介绍了MySQL忘记密码如何重置的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • MySQL SUM()带条件的求和方法与多条件的求和方法解读

    MySQL SUM()带条件的求和方法与多条件的求和方法解读

    这篇文章主要介绍了MySQL SUM()带条件的求和方法与多条件的求和方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 解决Navicat远程连接MySQL出现 10060 unknow error的方法

    解决Navicat远程连接MySQL出现 10060 unknow error的方法

    这篇文章主要介绍了解决Navicat远程连接MySQL出现 10060 unknow error的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 教你如何恢复使用MEB备份的MySQL数据库

    教你如何恢复使用MEB备份的MySQL数据库

    这篇文章主要介绍了教你如何恢复使用MEB备份的MySQL数据库的具体方法,需要的朋友可以参考下
    2016-09-09
  • MySQL实战教程之Join语句执行流程

    MySQL实战教程之Join语句执行流程

    这篇文章主要介绍了MySQL Join语句执行流程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Navicat把csv数据导入mysql

    Navicat把csv数据导入mysql

    这篇文章主要为大家详细介绍了Navicat把csv数据导入mysql,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • MySQL8.0数据库参数修改后重启不再失效的步骤及踩坑

    MySQL8.0数据库参数修改后重启不再失效的步骤及踩坑

    这篇文章主要介绍了MySQL8.0数据库参数修改后重启不再失效的步骤及踩坑,该功能可以让数据库在重启后依然保持动态修改的参数设置,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-05-05

最新评论