mysql学习教程,从入门到精通,SQL UNION 运算符(27)
1、SQL UNION 运算符
UNION
运算符在 SQL 中用于合并两个或多个 SELECT
语句的结果集,并默认去除重复的行。如果你想要包含所有重复行,可以使用 UNION ALL
。下面是一个使用 UNION
运算符的示例,假设我们有两个表:employees_2020
和 employees_2021
,它们存储了不同年份的员工信息,每个表都有 employee_id
(员工ID)和 employee_name
(员工姓名)两个字段。
1.1、示例场景
我们想要查询 2020 年和 2021 年所有员工的姓名,但不希望结果中出现重复的员工姓名。
表结构
employees_2020
employee_id | employee_name |
---|---|
1 | Alice |
2 | Bob |
3 | Charlie |
employees_2021
employee_id | employee_name |
---|---|
2 | Bob |
3 | Charlie |
4 | David |
1.2、SQL 查询
SELECT employee_name
FROM employees_2020
UNION
SELECT employee_name
FROM employees_2021;
结果
employee_name |
---|
Alice |
Bob |
Charlie |
David |
解释
这个查询通过 UNION
合并了两个 SELECT
语句的结果集:第一个从 employees_2020
表中选择 employee_name
,第二个从 employees_2021
表中选择 employee_name
。由于 UNION
默认去除重复行,所以尽管 Bob
和 Charlie
在两个表中都出现,但在最终的结果集中只出现一次。
注意
- 如果你的目的是包含所有重复行,应使用
UNION ALL
替代UNION
。 UNION
要求每个SELECT
语句中的列数必须相同,并且对应列的数据类型也需要兼容。- 在使用
UNION
时,默认情况下,SQL 会对结果集进行排序以去除重复项,这可能会影响查询性能。如果不需要排序或去重,使用UNION ALL
可以提高性能。 - 可以在
UNION
或UNION ALL
后添加ORDER BY
语句来对最终结果集进行排序。但请注意,ORDER BY
语句应放在最后一个SELECT
语句之后,并且对所有合并后的列都有效。
UNION
运算符在 SQL 中有广泛的用途,主要用于合并两个或多个SELECT
语句的结果集。以下是一些常见的用途和例子:
1. 3、合并来自不同表的数据
这是 UNION
最直接的用途。当你想要从两个或多个具有相似结构(即列数相同且对应列的数据类型兼容)的表中检索数据时,可以使用 UNION
来合并这些表的结果。
例子:
假设有两个表,sales_2020
和 sales_2021
,分别记录了 2020 年和 2021 年的销售数据,每个表都有 product_id
和 sales_amount
字段。
SELECT product_id, sales_amount
FROM sales_2020
UNION
SELECT product_id, sales_amount
FROM sales_2021;
这个查询将返回 2020 年和 2021 年所有产品的销售金额,但不包括重复的产品(如果某个产品在两年中都有销售记录,则只会出现一次)。
1.4. 合并具有不同条件的查询结果
有时,你可能想要从同一个表中检索数据,但基于不同的条件。使用 UNION
可以将这些基于不同条件的查询结果合并为一个结果集。
例子:
假设有一个 employees
表,包含员工的姓名(name
)和部门(department
)信息。你想要检索所有在“销售”部门或“市场”部门的员工姓名。
SELECT name
FROM employees
WHERE department = '销售'
UNION
SELECT name
FROM employees
WHERE department = '市场';
3. 跨数据库合并数据
虽然 UNION
本身是在单个数据库查询中使用的,但你可以通过数据库链接(如 Oracle 的数据库链接或 SQL Server 的链接服务器)来跨数据库合并数据。这通常涉及到更复杂的查询,但基本思想是相同的:从不同的数据源检索数据,并使用 UNION
(或 UNION ALL
)来合并结果。
4. 报告和数据分析
在生成报告或进行数据分析时,经常需要合并来自不同表或不同查询的数据集。UNION
允许你将这些数据集合并为一个,便于进一步的分析或报告生成。
5. 去除重复数据
虽然 UNION
的主要目的不是专门为了去除重复数据(因为那是它的默认行为),但在某些情况下,这正是你想要的。如果你想要从多个表中检索数据,并且只关心唯一的记录,那么 UNION
是一个很好的选择。
注意事项
- 当使用
UNION
时,每个SELECT
语句中的列数必须相同,并且对应列的数据类型也需要兼容。 UNION
默认去除重复的行。如果你想要包含所有重复的行,应该使用UNION ALL
。- 可以在
UNION
或UNION ALL
后面添加ORDER BY
语句来对最终结果集进行排序,但ORDER BY
必须位于最后一个SELECT
语句之后。 - 在某些情况下,使用
JOIN
而不是UNION
可能更合适,特别是当你想要根据两个表之间的关系来合并数据时。然而,JOIN
和UNION
在用途上是不同的,JOIN
用于基于相关列合并行的数据,而UNION
用于合并不同的结果集。
相关文章:
mysql学习教程,从入门到精通,SQL UNION 运算符(27)
1、SQL UNION 运算符 UNION 运算符在 SQL 中用于合并两个或多个 SELECT 语句的结果集,并默认去除重复的行。如果你想要包含所有重复行,可以使用 UNION ALL。下面是一个使用 UNION 运算符的示例,假设我们有两个表:employees_2020 …...
PKCE3-PKCE实现(SpringBoot3.0)
在 Spring Boot 3.0 JDK 17 的环境下,实现 PKCE 认证的核心步骤包括: 1)引入依赖:使用 Spring Security OAuth 2.0 客户端进行授权码流程。 2)配置 OAuth 2.0 客户端:在 Spring Boot 中配置 OAuth 2.0 客…...

C++详解vector
目录 构造和拷贝构造 赋值运算符重载: vector的编辑函数: assign函数: push_back和pop_back函数: insert函数: erase函数: swap函数: clear函数: begin函数: e…...

Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式
Redis作为一个高性能的key-value数据库,广泛应用于缓存、消息队列、排行榜等场景。然而,Redis是基于内存的数据库,这意味着一旦服务器宕机,内存中的数据就会丢失。为了解决这个问题,Redis提供了数据持久化的机制&#…...

World of Warcraft [CLASSIC] Engineering 421-440
工程学421-440 World of Warcraft [CLASSIC] Engineering 335-420_魔兽世界宗师级工程学需要多少点-CSDN博客 【萨隆邪铁锭】421-425 学习新技能,其他都不划算,只能做太阳瞄准镜 【太阳瞄准镜】426、427、428、429 【随身邮箱】430 这个基本要做的&am…...
VUE3.5版本解读
官网:Announcing Vue 3.5 | The Vue Point 2024年9月1日,宣布 Vue 3.5“天元突破:红莲螺岩”发布! 反应系统优化 在 3.5 中,Vue 的反应系统经历了另一次重大重构,在行为没有变化的情况下实现了更好的性能…...

spark计算引擎-架构和应用
一Spark 定义:Spark 是一个开源的分布式计算系统,它提供了一个快速且通用的集群计算平台。Spark 被设计用来处理大规模数据集,并且支持多种数据处理任务,包括批处理、交互式查询、机器学习、图形处理和流处理。 核心架构&#x…...
VUE 开发——AJAX学习(二)
一、Bootstrap弹框 功能:不离开当前页面,显示单独内容,供用户操作 步骤: 引入bootstrap.css和bootstrap.js准备弹框标签,确认结构通过自定义属性,控制弹框显示和隐藏 在<head>部分添加:…...

机器学习-KNN分类算法
1.1 KNN分类 KNN分类算法(K-Nearest-Neighbors Classification),又叫K近邻算法。它是概念极其简单,而效果又很优秀的分类算法。1967年由Cover T和Hart P提出。 KNN分类算法的核心思想:如果一个样本在特征空间中的k个最…...

云计算 Cloud Computing
文章目录 1、云计算2、背景3、云计算的特点4、云计算的类型:按提供的服务划分5、云计算的类型:按部署的形式划分 1、云计算 定义: 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可…...

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)
【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1)全排列 .1- 题目解析 .2- 代码编写 2)子集 .1- 题目解析 .2- 代码编写 3)找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4)全排列 II…...

怎么绕开华为纯净模式安装软件
我是标题 众所周不知,华为鸿蒙系统自带纯净模式,而且 没法关闭 : ) 我反正没找到关闭键 以前或许会有提示,无视风险,“仍要安装”。但我这次遇到的问题是,根本没有这个选项,只有“应用市场”和“取消”&…...

CentOS7 离线部署docker和docker-compose环境
一、Docker 离线安装 1. 下载docker tar.gz包 下载地址: Index of linux/static/stable/x86_64/ 本文选择版本:23.0.6 2.创建docker.service文件 vi docker.service文件内容如下: [Unit] DescriptionDocker Application Container Engi…...

Vue 自定义组件实现 v-model 的几种方式
前言 在 Vue 中,v-model 是一个常用的指令,用于实现表单元素和组件之间的双向绑定。当我们使用原生的表单元素时,直接使用 v-model 是很方便的,但是对于自定义组件来说,要实现类似的双向绑定功能就需要一些额外的处理…...
Python Pandas数据处理效率提升指南
大家好,在数据分析中Pandas是Python中最常用的库之一,然而当处理大规模数据集时,Pandas的性能可能会受到限制,导致数据处理变得缓慢。为了提升Pandas的处理速度,可以采用多种优化策略,如数据类型优化、向量…...

最大正方形 Python题解
最大正方形 题目描述 在一个 n m n\times m nm 的只包含 0 0 0 和 1 1 1 的矩阵里找出一个不包含 0 0 0 的最大正方形,输出边长。 输入格式 输入文件第一行为两个整数 n , m ( 1 ≤ n , m ≤ 100 ) n,m(1\leq n,m\leq 100) n,m(1≤n,m≤100),接…...
ubuntu中软件的进程管理-结束软件运行
在Ubuntu系统中,当某个运行中的软件无法正常退出时,可以通过以下几种方法强制结束该软件: 方法一:使用系统监视器(System Monitor)–小白专属 这个相当于win上的资源管理器 打开系统监视器 可以通过点击屏…...

Windows环境部署Oracle 11g
Windows环境部署Oracle 11g 1.安装包下载2. 解压安装包3. 数据库安装3.1 执行安装脚本3.2 电子邮件设置3.3 配置安装选项3.4 配置系统类3.5 选择数据库安装类型3.6 选择安装类型3.7 数据库配置3.8 确认安装信息3.9 设置口令 Oracle常用命令 2023年10月中旬就弄出大致的文章&…...

C语言进阶【8】--联合体和枚举(联合体和枚举这么好用,你不想了解一下吗?)
本章概述 联合体类型的声明联合体的特点联合体的大小的计算枚举类型的声明枚举类型的优点枚举类型的使用枚举类型的大小彩蛋时刻!!! 联合体类型的声明 概述:联合体的关键字为 union。它的结构和结构体是一样的。进行展示…...

Android OTA升级
针对Android系统OTA升级,MTK平台有相关介绍文档:https://online.mediatek.com/apps/faq/detail?faqidFAQ27117&listSW 概念一:OTA包的构建 AOSP full build:Android原生提供的全量包的构建,意思就是可以从任何一…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...

【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...

MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

Kafka入门-生产者
生产者 生产者发送流程: 延迟时间为0ms时,也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于:异步发送不需要等待结果,同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...