软件测试|SQL中的UNION和UNION ALL详解

简介

在SQL(结构化查询语言)中,UNION和UNION ALL是用于合并查询结果集的两个关键字。它们在数据库查询中非常常用,但它们之间有一些重要的区别。在本文中,我们将深入探讨UNION和UNION ALL的含义、用法以及它们之间的区别。

UNION操作

UNION用于合并两个或多个查询的结果集,并返回一个唯一的结果集,即去重后的结果。它的语法如下:

SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;

注意事项:

  • 每个 SELECT 语句都必须拥有相同数量的字段;
  • 不同 SELECT 语句的对应字段必须拥有相似的类型。

使用示例:

假设我们有两个表employeescontractors,它们分别包含员工和合同工的数据。现在我们想要获取所有员工和合同工的唯一记录。

SELECT employee_id, first_name, last_name
FROM employees
UNION
SELECT contractor_id, first_name, last_name
FROM contractors;

注:UNION操作默认会去除重复的记录,因此如果两个查询的结果有重复的记录,只会返回一条。

UNION ALL操作

UNION ALL也用于合并查询结果集,但不会去除重复的记录,它会返回所有符合条件的记录。它的语法如下:

SELECT column1, column2, ...
FROM table1
UNION ALL
SELECT column1, column2, ...
FROM table2;

使用示例:

我们使用上述的employeescontractors表进行示例:

SELECT employee_id, first_name, last_name
FROM employees
UNION ALL
SELECT contractor_id, first_name, last_name
FROM contractors;

注: UNION ALL不会去重,如果两个查询的结果有重复的记录,它会全部返回。

UNION和UNION ALL的区别

  • 去重功能: UNION会对结果集进行去重,返回唯一记录;而UNION ALL则返回所有符合条件的记录,包括重复的记录。
  • 性能: 由于UNION需要去重,执行时需要进行额外的处理,因此在处理大量数据时,UNION ALL的性能通常比UNION更好。
  • 结果集数量: UNION可能返回的结果集数量比UNION ALL少,因为它会去除重复记录。
  • 使用场景: 如果需要去除重复记录,并且对性能没有过多要求,可以使用UNION。如果需要保留所有记录或对性能有较高要求,可以使用UNION ALL。

总结

UNIONUNION ALL是SQL中用于合并查询结果集的两个关键字。UNION用于去除重复记录并返回唯一结果集,而UNION ALL返回所有符合条件的记录,包括重复的记录。在使用时,要根据需要去重和性能要求来选择合适的操作。当需要去除重复记录时使用UNION,当不需要去重或对性能要求较高时使用UNION ALL。了解这两个操作的区别和适用场景有助于更有效地编写SQL查询。

注:有的数据库不支持FULL JOIN,可以使用UNION ALL 来替代 FULL JOIN

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redisson 源码解析 - 分布式锁实现过程

一、Redisson 分布式锁源码解析 Redisson是架设在Redis基础上的一个Java驻内存数据网格。在基于NIO的Netty框架上,充分的利用了Redis键值数据库提供的一系列优势,在Java实用工具包中常用接口的基础上,为使用者提供了一系列具有分布式特性的常…

Java LeetCode篇-二叉搜索树经典解法(实现:二叉搜索树的最近公共祖先、根据前序遍历建树等)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 判断合法 1.1 使用遍历方式实现验证二叉搜索树 1.2 使用递归方式实现验证二叉搜索树 2.0 求范围和 2.1 使用非递归实现二叉搜索树的范围和 2.2 使用递归方式实现…

软件测试|测试平台开发-Flask 入门:URL组成部分详解

简介 Flask 是一款流行的 Python Web 框架,它简单轻量而灵活,适用于构建各种规模的 Web 应用程序。在 Flask 中,URL(Uniform Resource Locator)是指定 Web 应用程序中资源的唯一标识符。URL 组成部分是构成一个完整 U…

可在图像中生成任意精准文本,支持中文!阿里开源AnyText

随着Midjourney、Stable Difusion等产品的出现,文生图像领域获得了巨大突破。但是想在图像中生成/嵌入精准的文本却比较困难。 经常会出现模糊、莫名其妙或错误的文本,尤其是对中文支持非常差,例如,生成一张印有“2024龙年吉祥”…

在甲骨文云上用 Ray +Vllm 部署 Mixtral 8*7B 模型

在甲骨文云上用 Ray Vllm 部署 Mixtral 8*7B 模型 0. 背景1. 甲骨文云 GPU 实例2. 配置 VCN 的 Security List3. 安装 Ray 和 Vllm4. 启动 Ray5. 启动 Vllm 0. 背景 根据好几个项目的需求,多次尝试 Mixtral-8x7B-Instruct-v0.1 这个模型,确实性能不错。…

GD32移植FreeRTOS

准备工作 GD32开发板。案例是以梁山派为开发板。Windows系统的电脑。当前是以Win11的电脑来实现案例的。Keil开发工具。并且已经安装好GD32依赖环境。FreeRTOS源码包。下载地址为: Releases FreeRTOS/FreeRTOS GitHub 当前以FreeRTOSv202212.01版本为例。也是目前的最新版本…

SpringMVC-HelloWorld

一、SpringMVC简介 1.1 SpringMVC和三层架构 MVC是一种软件架构思想,将软件按照模型、视图和控制器三个部分划分。 M:model,模型层,指工程中的JavaBean,用于处理数据。JavaBean分为两类: 实体类Bean&…

网络通信(11)-C#TCP服务端封装帮助类实例

本文使用Socket在C#语言环境下完成TCP服务端封装帮助类的实例。 实例完成的功能: 服务器能够连接多个客户端显示在列表中,实现实时刷新。 服务器接收客户端的字符串数据。 选中列表中的客户端发送字符串数据。 在VS中创建C# Winform项目,编辑界面,如下: UI文件 name…

4030 【例题2】Cashier Employment 出纳员问题(Poj1275Hdu1529)————一本通(提高篇)

今天主要来讲讲差分约束 题目大意&#xff1a; 从0点到23点&#xff0c;给出每个时刻需要的售货员个数&#xff0c;再给出每个时刻应征的售货员个数&#xff0c;然后让你求出满足需求的最小售货员个数 解题思路&#xff1a;差分约束 #include <queue> #include <cs…

Spring 动态数据源事务处理

在一般的 Spring 应用中,如果底层数据库访问采用的是 MyBatis,那么在大多数情况下,只使用一个单独的数据源,Spring 的事务管理在大多数情况下都是有效的。然而,在一些复杂的业务场景下,如需要在某一时刻访问不同的数据库,由于 Spring 对于事务管理实现的方式,可能不能达…

已解决 ValueError: Data cardinality is ambiguous 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

WPF 导航界面悬浮两行之间的卡片 漂亮的卡片导航界面 WPF漂亮渐变颜色 WPF漂亮导航头界面 UniformGrid漂亮展现

在现代应用程序设计中&#xff0c;一个漂亮的WPF导航界面不仅为用户提供视觉上的享受&#xff0c;更对提升用户体验、增强功能可发现性和应用整体效率起到至关重要的作用。以下是对WPF漂亮导航界面重要性的详尽介绍&#xff1a; 首先&#xff0c;引人入胜的首页界面是用户与软…

Redis原理篇(Dict的收缩扩容机制和渐进式rehash)

Dict&#xff08;即字典&#xff09; Redis是一种键值型数据库&#xff0c;其中键与值的映射关系就是Dict实现的。 Dict通过三部分组成&#xff1a;哈希表&#xff08;DictHashTable&#xff09;&#xff0c;哈希节点(DictEntry)&#xff0c;字典&#xff08;Dict&#xff09…

【docker】centos7安装harbor

目录 零、前提一、下载离线包二、安装三、访问四、开机自启 零、前提 1.前提是已经安装了docker和docker-compose 一、下载离线包 1. csdn资源&#xff1a;harbor-offline-installer-v2.10.0.tgz 2. 百度云盘&#xff08;提取码&#xff1a;ap3t&#xff09;&#xff1a;harbo…

Nvidia Jetson AGX Orin使用CAN与底盘通信(ROS C++ 驱动)

文章目录 一、Nvidia Jetson AGX Orin使用CAN通信1.1 CAN使能配置修改GPIO口功能1.2 can收发测试 二、通过CAN协议编写CAN的SocketCan ROS1驱动程序2.1 通讯协议2.2 接收数据节点2.3 发送数据节点2.4 功能包配置 三、ROS2驱动程序 一、Nvidia Jetson AGX Orin使用CAN通信 参考…

python股票分析挖掘预测技术指标知识之蜡烛图指标(6)

本人股市多年的老韭菜&#xff0c;各种股票分析书籍&#xff0c;技术指标书籍阅历无数&#xff0c;萌发想法&#xff0c;何不自己开发个股票预测分析软件&#xff0c;选择python因为够强大&#xff0c;它提供了很多高效便捷的数据分析工具包。 我们已经初步的接触与学习其中数…

Java中的String类:深入分析与高级应用

Java中的String类&#xff1a;深入分析与高级应用 1. String类基础1.1 概述1.2 不可变性的好处1.3 字符串常量池 2. 创建String对象3. String类常用方法4. 内存管理4.1 字符串常量池4.2 intern方法 5. String与StringBuilder/StringBuffer6. 性能考虑7. 结论 Java中的String类是…

【Bootstrap学习 day14】

分页 分页是通过将内容分成单独的页面来组织内容的过程&#xff0c;分页导航一般用于文章列表页&#xff0c;下载列表、图片列表等&#xff0c;由于数据很多&#xff0c;不可能在一页显示&#xff0c;一般分页导航包括上一页&#xff0c;下一页、数字页码等。 基础的分页 要创…

【Python机器学习】线性模型——用于二分类的线性模型

线性模型也广泛用于分类问题&#xff0c;对于二分类问题&#xff0c;可以用以下公式进行预测&#xff1a; yw[0]*x[0]w[1]*x[1]…………w[p]*x[p]b>0 公式与现行回归的公式非常类似&#xff0c;但没有返回特征的加权求和&#xff0c;而是为预测设置了阈值。如果函数值小于…

Unity 欧盟UMP用户隐私协议Android接入指南

Unity 欧盟UMP用户协议Android接入指南 官方文档链接开始接入mainTemplate.gradle 中引入CustomUnityPlayerActivity 导入UMP相关的包java类中新增字段初始化UMPSDK方法调用![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/d882171b068c46a1b956e80425f3a9cf.png)测…