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

 更新时间:2024年04月02日 15:11:18   作者:Hello 阿月  
这篇文章主要介绍了MySQL之使用UNION和UNION ALL合并两个或多个SELECT语句的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

使用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 保留了所有行,包括重复的行。

总结

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

相关文章

  • Linux操作系统操作MySQL常用命令小结

    Linux操作系统操作MySQL常用命令小结

    本文给大家分享Linux操作系统操作MySQL常用命令小结,需要的朋友参考下吧
    2017-07-07
  • mysql 5.7.30安装配置方法图文教程

    mysql 5.7.30安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.30安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • mysql数据库修改添加Date格式列的方法

    mysql数据库修改添加Date格式列的方法

    这篇文章主要介绍了关于mysql数据库如何修改添加Date格式的列 ,需要的朋友可以参考下
    2014-07-07
  • mysql高效导数据的方法讲解

    mysql高效导数据的方法讲解

    模拟现网测试,需要搭建测试环境,导入上亿级的数据到数据库。对于到的问题做些简单记录,有需要的朋友可以参考一下
    2013-09-09
  • MySQL无法存储Emoji表情问题的解决方法分析

    MySQL无法存储Emoji表情问题的解决方法分析

    这篇文章主要介绍了MySQL无法存储Emoji表情问题的解决方法,结合实例形式分析了存储Emoji表情报错的原因及相应的解决方法,需要的朋友可以参考下
    2018-07-07
  • mysql kill进程后出现killed死锁问题及解决

    mysql kill进程后出现killed死锁问题及解决

    这篇文章主要介绍了mysql kill进程后出现killed死锁问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 利用Prometheus与Grafana对Mysql服务器的性能监控详解

    利用Prometheus与Grafana对Mysql服务器的性能监控详解

    Prometheus是源于 Google Borgmon的一个开源监控系统,用 Golang开发。被很多人称为下一代监控系统。Grafana是一个开源的图表可视化系统,简单说图表配置比较方便、生成的图表比较漂亮。下面就介绍了利用Prometheus与Grafana对Mysql服务器性能监控的方法。
    2017-03-03
  • MySQL多版本并发控制MVCC详解

    MySQL多版本并发控制MVCC详解

    这篇文章主要介绍了MySQL多版本并发控制MVCC详解,MVCC是通过数据行的多个版本管理来实现数据库的并发控制,这项技术使得在InnoDB的事务隔离级别下执行一致性读操作有了保证
    2022-07-07
  • MySQL中字符串函数详细介绍

    MySQL中字符串函数详细介绍

    通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一个子串以及删除一个子串等。
    2011-05-05
  • 详解MySQL多表查询

    详解MySQL多表查询

    最近学习了多表查询,这篇文章主要给大家介绍了关于MySQL多表查询,文中通过实例代码介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2023-04-04

最新评论

?


http://www.vxiaotou.com