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

mysql学习教程,从入门到精通,SQL UNION 运算符(27)

1、SQL UNION 运算符

UNION 运算符在 SQL 中用于合并两个或多个 SELECT 语句的结果集,并默认去除重复的行。如果你想要包含所有重复行,可以使用 UNION ALL。下面是一个使用 UNION 运算符的示例,假设我们有两个表:employees_2020employees_2021,它们存储了不同年份的员工信息,每个表都有 employee_id(员工ID)和 employee_name(员工姓名)两个字段。

1.1、示例场景

我们想要查询 2020 年和 2021 年所有员工的姓名,但不希望结果中出现重复的员工姓名。

表结构

employees_2020

employee_idemployee_name
1Alice
2Bob
3Charlie

employees_2021

employee_idemployee_name
2Bob
3Charlie
4David

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 默认去除重复行,所以尽管 BobCharlie 在两个表中都出现,但在最终的结果集中只出现一次。

注意

  • 如果你的目的是包含所有重复行,应使用 UNION ALL 替代 UNION
  • UNION 要求每个 SELECT 语句中的列数必须相同,并且对应列的数据类型也需要兼容。
  • 在使用 UNION 时,默认情况下,SQL 会对结果集进行排序以去除重复项,这可能会影响查询性能。如果不需要排序或去重,使用 UNION ALL 可以提高性能。
  • 可以在 UNIONUNION ALL 后添加 ORDER BY 语句来对最终结果集进行排序。但请注意,ORDER BY 语句应放在最后一个 SELECT 语句之后,并且对所有合并后的列都有效。
    UNION 运算符在 SQL 中有广泛的用途,主要用于合并两个或多个 SELECT 语句的结果集。以下是一些常见的用途和例子:

1. 3、合并来自不同表的数据

这是 UNION 最直接的用途。当你想要从两个或多个具有相似结构(即列数相同且对应列的数据类型兼容)的表中检索数据时,可以使用 UNION 来合并这些表的结果。
例子
假设有两个表,sales_2020sales_2021,分别记录了 2020 年和 2021 年的销售数据,每个表都有 product_idsales_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
  • 可以在 UNIONUNION ALL 后面添加 ORDER BY 语句来对最终结果集进行排序,但 ORDER BY 必须位于最后一个 SELECT 语句之后。
  • 在某些情况下,使用 JOIN 而不是 UNION 可能更合适,特别是当你想要根据两个表之间的关系来合并数据时。然而,JOINUNION 在用途上是不同的,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弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 引入bootstrap.css和bootstrap.js准备弹框标签&#xff0c;确认结构通过自定义属性&#xff0c;控制弹框显示和隐藏 在<head>部分添加&#xff1a…...

机器学习-KNN分类算法

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

云计算 Cloud Computing

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

【算法】DFS 系列之 穷举/暴搜/深搜/回溯/剪枝(上篇)

【ps】本篇有 9 道 leetcode OJ。 目录 一、算法简介 二、相关例题 1&#xff09;全排列 .1- 题目解析 .2- 代码编写 2&#xff09;子集 .1- 题目解析 .2- 代码编写 3&#xff09;找出所有子集的异或总和再求和 .1- 题目解析 .2- 代码编写 4&#xff09;全排列 II…...

怎么绕开华为纯净模式安装软件

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

CentOS7 离线部署docker和docker-compose环境

一、Docker 离线安装 1. 下载docker tar.gz包 下载地址&#xff1a; Index of linux/static/stable/x86_64/ 本文选择版本&#xff1a;23.0.6 2.创建docker.service文件 vi docker.service文件内容如下&#xff1a; [Unit] DescriptionDocker Application Container Engi…...

Vue 自定义组件实现 v-model 的几种方式

前言 在 Vue 中&#xff0c;v-model 是一个常用的指令&#xff0c;用于实现表单元素和组件之间的双向绑定。当我们使用原生的表单元素时&#xff0c;直接使用 v-model 是很方便的&#xff0c;但是对于自定义组件来说&#xff0c;要实现类似的双向绑定功能就需要一些额外的处理…...

Python Pandas数据处理效率提升指南

大家好&#xff0c;在数据分析中Pandas是Python中最常用的库之一&#xff0c;然而当处理大规模数据集时&#xff0c;Pandas的性能可能会受到限制&#xff0c;导致数据处理变得缓慢。为了提升Pandas的处理速度&#xff0c;可以采用多种优化策略&#xff0c;如数据类型优化、向量…...

最大正方形 Python题解

最大正方形 题目描述 在一个 n m n\times m nm 的只包含 0 0 0 和 1 1 1 的矩阵里找出一个不包含 0 0 0 的最大正方形&#xff0c;输出边长。 输入格式 输入文件第一行为两个整数 n , m ( 1 ≤ n , m ≤ 100 ) n,m(1\leq n,m\leq 100) n,m(1≤n,m≤100)&#xff0c;接…...

ubuntu中软件的进程管理-结束软件运行

在Ubuntu系统中&#xff0c;当某个运行中的软件无法正常退出时&#xff0c;可以通过以下几种方法强制结束该软件&#xff1a; 方法一&#xff1a;使用系统监视器&#xff08;System Monitor&#xff09;–小白专属 这个相当于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】--联合体和枚举(联合体和枚举这么好用,你不想了解一下吗?)

本章概述 联合体类型的声明联合体的特点联合体的大小的计算枚举类型的声明枚举类型的优点枚举类型的使用枚举类型的大小彩蛋时刻&#xff01;&#xff01;&#xff01; 联合体类型的声明 概述&#xff1a;联合体的关键字为 union。它的结构和结构体是一样的。进行展示&#xf…...

Android OTA升级

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

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台

🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...

篇章二 论坛系统——系统设计

目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...

STM32标准库-ADC数模转换器

文章目录 一、ADC1.1简介1. 2逐次逼近型ADC1.3ADC框图1.4ADC基本结构1.4.1 信号 “上车点”&#xff1a;输入模块&#xff08;GPIO、温度、V_REFINT&#xff09;1.4.2 信号 “调度站”&#xff1a;多路开关1.4.3 信号 “加工厂”&#xff1a;ADC 转换器&#xff08;规则组 注入…...

多模态大语言模型arxiv论文略读(112)

Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文标题&#xff1a;Assessing Modality Bias in Video Question Answering Benchmarks with Multimodal Large Language Models ➡️ 论文作者&#xff1a;Jea…...

Linux实现线程同步的方式有哪些?

什么是线程同步&#xff1f; 想象一下超市收银台&#xff1a;如果所有顾客&#xff08;线程&#xff09;同时挤向同一个收银台&#xff08;共享资源&#xff09;&#xff0c;场面会一片混乱。线程同步就是给顾客们发"排队号码牌"&#xff0c;确保&#xff1a; 有序访…...