当前位置: 首页 > news >正文

MySQL语句|使用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 保留了所有行,包括重复的行。
http://www.lryc.cn/news/280234.html

相关文章:

  • UNRAID 优盘制作
  • 二、Java中SpringBoot组件集成接入【MySQL和MybatisPlus】
  • 银行测试--------转账
  • 阿里云最新优惠券领取方法及优惠活动汇总
  • 动态分配内存的风险
  • 多行SQL转成单行SQL
  • wpf的资源路径
  • shell 脚本之一键部署安装 Nginx
  • 第01章_Java语言概述拓展练习(为什么要设置path?)
  • 手机直连卫星及NTN简介
  • 对git中tag, branch的重新理解
  • python中none的替换方法:pandasnumpy
  • 您与此网站之间建立的连接不安全
  • __declspec (dllexport)定义了导出函数,但dll中没有此函数
  • CSS样式学习
  • 传感数据分析中的小波滤波:理论与公式
  • iOS 按钮添加点击震动
  • 李沐-《动手学深度学习》--02-目标检测
  • 【EAI 006】ChatGPT for Robotics:将 ChatGPT 应用于机器人任务的提示词工程研究
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • Rustdesk本地配置文件存在什么地方?
  • 36-javascript输出方式,弹框:普通,confirm弹框,prompt弹框,控制台输出:普通,warm,error
  • 自动执行 Active Directory 清理
  • DICE模型的原理与推导、碳循环与气候变化、政策评估、不确定性分析与代码分析
  • 【机器学习前置知识】狄利克雷分布
  • Spring Retry(方法重试、方法重新调用)
  • JavaScript音视频,使用JavaScript如何在浏览器录制电脑摄像头画面为MP4视频文件并下载视频文件到本地
  • IaC基础设施即代码:使用Terraform 连接 alicloud阿里云
  • Vue3 如何使用移动端调试工具vConsole
  • 【物流管理系统-Python简易版】