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读取JSON转换的方式

    MySQL读取JSON转换的方式

    这篇文章主要介绍了MySQL读取JSON转换的方式,本文给大家分享两种方式给大家讲解处理方式,结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • mysql远程登录root账户报错1045的解决

    mysql远程登录root账户报错1045的解决

    这篇文章主要介绍了mysql远程登录root账户报错1045的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • MySQL8.x登陆root用户突然提示mysql_native_password的实现

    MySQL8.x登陆root用户突然提示mysql_native_password的实现

    本文主要介绍了MySQL 8.x登陆root用户突然提示mysql_native_password,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-08-08
  • MySQL安装出现The configuration for MySQL Server 8.0.28 has failed. You can...错误的解决办法

    MySQL安装出现The configuration for MySQL Server 8.0.28 has

    这篇文章主要给大家介绍了MySQL安装出现The configuration for MySQL Server 8.0.28 has failed. You can...错误的解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • Mysql中count带条件计数实例代码

    Mysql中count带条件计数实例代码

    这篇文章主要给大家介绍了关于Mysql中count带条件计数的相关资料,Mysql中count()函数的一般用法是统计字段非空的记录数,所以可以利用这个特点来进行条件统计,需要的朋友可以参考下
    2023-09-09
  • MySQL 关闭子表的外键约束检察方法

    MySQL 关闭子表的外键约束检察方法

    下面小编就为大家带来一篇MySQL 关闭子表的外键约束检察方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Mac 安装和卸载 Mysql5.7.11 的方法

    Mac 安装和卸载 Mysql5.7.11 的方法

    本文给大家介绍Mac 安装和卸载 Mysql5.7.11 的方法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-03-03
  • 将数据插入到MySQL表中的详细教程

    将数据插入到MySQL表中的详细教程

    这篇文章主要介绍了将数据插入到MySQL表中的详细教程,文中给出了在PHP脚本中操作的示例,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-05-05
  • MySQL中的行级锁定示例详解

    MySQL中的行级锁定示例详解

    这篇文章主要给大家介绍了关于MySQL中行级锁定的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Advanced SQL Injection with MySQL

    Advanced SQL Injection with MySQL

    Advanced SQL Injection with MySQL...
    2006-12-12

最新评论