【数据库|第11期】深入掌握 SQL Server、Access 与 SQLite 中的 `UNION` 与 `UNION ALL`:从理论到实践

news2024/11/15 12:30:31

日期:2024年9月3日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006


文章目录

  • 一、前言
  • 二、`UNION`:去除重复,保留唯一
    • 1、基本语法
    • 2、代码示例
  • 三、`UNION ALL`:合并所有,保留全部
    • 1、基本语法
    • 2、代码示例
  • 四、注意事项
  • 五、结语


在这里插入图片描述


一、前言


在数据库查询中,UNIONUNION ALL 是两个至关重要的操作符,它们用于合并多个 SELECT 语句的结果集,为数据的整合与分析提供了强大的工具。本文将通过实例深入探讨这两个操作符在 SQL ServerAccess 以及 SQLite 中的用法,帮助你从理论到实践,全面掌握其应用技巧。

二、UNION:去除重复,保留唯一


UNION 操作符用于合并两个或多个 SELECT 语句的结果集,同时自动去除其中的重复行,确保每一条记录的唯一性。这意味着即使多个 SELECT 语句中含有相同的数据行,UNION 也会确保结果集中不出现重复。

1、基本语法

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

其中 column_name(s) 表示列名(字段),可以是一个,也可以很多个。重要的是,所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同

2、代码示例

假设我们有两个表 EmployeesContractors,它们都有 NameSalary 字段。

SQL ServerAccess 以及 SQLite 示例如下所示:

SELECT Name, Salary FROM Employees
UNION
SELECT Name, Salary FROM Contractors;

若按 Salary 字段从大到小排序,则:

SELECT Name, Salary FROM Employees
UNION
SELECT Name, Salary FROM Contractors;
ORDER BY Salary DESC

示例数据:

Employees:

NameSalary
张三10000
李四9000
王五11000

Contractors:

NameSalary
李四9000
王五11000
赵六12000

运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。

NameSalary
张三10000
李四9000
王五11000
赵六12000

排序后

NameSalary
赵六12000
王五11000
张三10000
李四9000

三、UNION ALL:合并所有,保留全部


UNION 不同,UNION ALL 保留所有的行,包括重复的行。这意味着,如果多个 SELECT 语句中存在重复的数据,UNION ALL 会将这些行全部保留,不进行任何去重操作。

1、基本语法

SELECT column_name(s) FROM table1
UNION All
SELECT column_name(s) FROM table2;

其中 column_name(s) 表示列名(字段),可以是一个,也可以很多个。重要的是,所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同

2、代码示例

假设我们有两个表 EmployeesContractors,它们都有 NameSalary 字段。

SQL ServerAccess 以及 SQLite 示例如下所示:

SELECT Name, Salary FROM Employees
UNION ALL
SELECT Name, Salary FROM Contractors;

若按 Salary 字段从大到小排序,则:

SELECT Name, Salary FROM Employees
UNION ALL
SELECT Name, Salary FROM Contractors;
ORDER BY Salary DESC

示例数据:

Employees:

NameSalary
张三10000
李四9000
王五11000

Contractors:

NameSalary
李四9000
王五11000
赵六12000

运行上述UNION命令后,结果将去除重复的记录,仅保留唯一值。

NameSalary
张三10000
李四9000
王五11000
李四9000
王五11000
赵六12000

排序后

NameSalary
赵六12000
王五11000
王五11000
张三10000
李四9000
李四9000

四、注意事项

  • UNION 操作符默认去除重复的记录。如果需要包含重复记录,可以使用 UNION ALL
  • UNION 通常会比 UNION ALL 执行得慢,因为它需要额外的步骤来去除重复的行。
  • UNION 的结果集默认会进行排序,而 UNION ALL 不会。
  • 所有选择列表中的列数必须相同,对应的列必须具有兼容的数据类型,列的顺序必须相同
  • 在性能方面,对于大型数据库,SQL Server 通常比 AccessSQLite 更优。
  • 在兼容性方面,SQLite 由于其轻量级特性,可能在某些特定环境下更受欢迎,尤其是在移动设备和嵌入式系统中。

五、结语


无论是 SQL Server 的专业级应用,Access 的桌面级处理,还是 SQLite 的轻量级需求,UNIONUNION ALL 都是数据整合中的得力助手。选择哪个操作符,取决于你对数据重复性的需求。当数据的唯一性比完整性和效率更重要时,UNION 是你的首选;反之,如果数据完整性和效率至上,UNION ALL 更能胜任。


参考文章:

  • 《SQL UNION 操作符》
  • 《SQLite Unions 子句》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/141676192

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

EMC整改问题

定位问题: 1.控制变量比较法:连和不连,接和不接来判断 2.频率判断法:低频一般是电源,高频一般是信号或者无线通信问题,还有倍频问题 3.解决方法: a.加器件,滤波,EMI共模电感,磁环 b.电源,高速信…

App推广新篇章:Xinstall带你走出数据迷雾,实现高效推广!

在如今的移动互联网时代,App推广已成为每个应用开发者必须面对的重要课题。然而,推广过程中往往伴随着诸多痛点,如数据混乱、投放盲目、决策滞后以及作弊困扰等。这些问题不仅影响了推广效果,还可能导致资源的浪费和投入产出不均衡…

Java版本的扫雷游戏程序

一、开发环境 开发工具:eclipse2021-12 JDK版本:JDK15.0.1 二、运行效果展示 这张图是游戏刚开始的画面,重置以后也是这个画面 此图是写代码的过程调试用的画面,方便查找问题。 此图是运行过程中的图片

实习的一点回顾Webhook的执行

1.Webhook流程 1.Bass外的部分 比如我通过控制台或者js脚本去调用curl命令call指定的webhook的地址的功能脚本 命令发送到网关,网关通过注册中心之类的发送到服务实体上。 这些是微服务的东西 2.OpenAPI到Controller阶段 先看之前openAPI的那篇前置 请求进来之…

Anaconda的环境管理操作命令详解-学习篇

一、通过命令方式管理环境 1. 查看环境 使用以下命令查看当前所有环境的命令conda env list可以看到目前电脑的base环境情况,我的本机只有一个base环境。是anaconda3在安装的时候所选的根目录信息。命令前的(base) 代表目前执行处于base环境,* 代表目前…

高德地图-小米14 Pro 定制版 v12.10.61.3021 简洁版

高德地图小米14 Pro 定制版是一款专门为小米14 Pro 设计的简洁版高德地图。相较于普通版本,该版本体积更小,运行速度更快,并且没有广告。支持驾车、骑行、公交地铁、步行等多种导航模式,使用北斗卫星导航系统,精准度非…

从零开始使用 LangGraph、LLaMA3 和 Elasticsearch 向量存储构建本地代理的教程

作者:来自 Elastic Pratik Rana 在本教程中,我们将了解如何使用 LangGraph、LLaMA3 和 Elasticsearch Vector Store 从头开始​​创建可靠的代理。我们将结合 3 篇高级 RAG 论文中的想法: 用于路由的自适应 RAG:根据内容将问题引…

Redis List 应用指南:命令、编码与阻塞操作全解析

list 类型 一 . 常见命令1.1 lpush、lrange1.2 lpushx1.3 rpush1.4 rpushx1.5 lpop、rpop1.6 lindex1.7 linsert1.8 llen1.9 lrem1.10 ltrim1.11 lset1.12 blpop 和 brpop原理使用 小结 二 . 内部编码5.3 应用场景5.3.1 作为 "数组" 这样的结构来存储多个元素5.3.2 消…

Spring高手之路22——AOP切面类的封装与解析

文章目录 1. AOP是如何收集切面类并封装的?2. Advisor 是什么,它是怎么构建的?2.1 什么是 Advisor2.2 Advisor 的构建(源码分析时序图说明) 3. TargetSource 的构建和作用3.1 TargetSource 的作用3.2 TargetSource 的构…

java实现,PDF转换为TIF

目录 ■JDK版本 ■java代码・实现效果 ■POM引用 ■之前TIF相关的问题(两张TIF合并) ■问题 ■问题1:无法生成TIF,已解决 ■问题2:生成的TIF过大,待解决 ■相关工具 SVF foxit ■相关知识 Imag…

Fastjson1.2.24(CVE-2017-18349)分析

前言 Fastjson在1.2.24版本之前存在两条利用链,分别是 JNDI com.sun.rowset.JdbcRowSetImplcom.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl 我们本次也是对这两条链进行分析和过程复现 在fastjson漏洞中,我们往往是寻找一个类&#xff0…

【苍穹外卖】Day 5 Redis、店铺营业状态接口

1 基本介绍 Redis是一个基于 内存 的 key-value 结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 运行 在cmd下 redis-server.exe redis.windows.conf 启动状态下,再 redis-cli.exe 测试: 也可以…

Win32远线程注入

远线程注入 远线程(RemoteThread)注入是指一个进程在另一个进程中创建线程的技术,这是一种很经典的DLL注入技术。 虽然比较古老,但是很实用。通过远线程注入,再配合api函数的hook技术,可以实现很多有意思的功能。 实现远线程注入…

自己封装栈和队列

队列 #include <iostream>using namespace std; class queue { private:int *data;int size;int front;int tail;public://无参构造queue():size(20){datanew int [size];front0;tail0;}//有参构造queue(int s){datanew int [size];sizes;front0;tail0;}~queue(){delete …

MySQL三大日志详解

binlog相关 bin log是什么?作用是什么呢? 答: bin log实际上是一个物理日志,当我们对某个数据页进行修改操作时我们就会将这个操作写到bin log中,当我们数据库需要进行主备、主从复制等操作时,都可以基于bin log保证数据一致性。 那bin log缓冲区了解嘛? 答: 如下图…

硬件产品经理进阶:产品层次划分的3个方法

目录 1、内容简介 2、产品三层次概念 3、产品四层次概念 4、产品五层次概念 作者简介 1、内容简介 产品本身指的是能够满足需求和欲望的一种媒介物。 可以是实体、也可以是虚拟的服务。 在产品竞争白热化的今天&#xff0c; 如果只是考虑把产品做出来、 仅仅在实际产…

【微信小程序入门】3、微信小程序开发基础及微信开发者工具的使用

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

vue2———组件

一个简单的组件 组件进行注册并使用 结果&#xff1a; 在进行对组件的学习时遇见一些问题&#xff1a; 1、组件的命名 解决方法&#xff1a; 组件的命名 Vue.js 组件的命名遵循一些最佳实践&#xff0c;这些实践有助于保持代码的清晰和一致性。 多单词命名&#xff1a;Vue 官…

【网络安全】Collabora在线存储型XSS(CVE-2024-29182)+代码审计

未经许可,不得转载。 文章目录 前言正文代码审计前言 Collabora 是一家专注于开源软件的公司,主要提供与文档协作、办公套件和企业解决方案相关的服务。 Collabora 提供了 Collabora Online,这是一个基于 Web 的在线办公套件,允许用户在浏览器中实时编辑文档。这种服务特…

Two to One——C语言提高题【7 kyu】

一、原题 链接&#xff1a;Training on Two to One | Codewars Take 2 strings s1 and s2 including only letters from a to z. Return a new sorted string (alphabetical ascending), the longest possible, containing distinct letters - each taken only once - coming…