04 MySQL --DQL 专题--Union、exists

1. UNION、UNION ALL

UNION 关键字的作用?
合并两个或多个 SELECT 语句的结果。发挥的作用与 or 非常相似

UNION关键字生效的前提?

  • 每个 SELECT 语句必须拥有相同数量的列。
  • 每个 SELECT 语句中的列的顺序必须相同。
  • 列必须拥有相似的数据类型。
SELECT column_name(s) FROM table1
UNION (ALL)
SELECT column_name(s) FROM table2;

UNION、UNION ALL的区别?
union 会对合并之后的查询结果集进行去重操作。
union all 是直接将查询结果集合并,不进行去重操作。

因此,union all 和 union 都可以完成的话,优先选择 union all,因为其不需要去重,所以效率高一些。

UNION 后的结果集格式?
UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

1.1 实例

数据库中有两张表,结构如图
在这里插入图片描述
需求:查询两个表中的 conutry,并去重

分析:将两表查出的 conutry 进行 union。

SELECT country FROM Websites
UNION
SELECT country FROM apps
ORDER BY country;

从两表中选取所有的 conutry 为中国(CN)的数据(不去重):

SELECT country, name FROM Websites
WHERE country='CN'
UNION ALL
SELECT country, app_name FROM apps
WHERE country='CN'
ORDER BY country;

在这里插入图片描述

2. EXISTS

EXISTS 运算符用于判断查询子句是否有记录,如果查询子句存在记录则返回 True,否则返回 False。

更具体来说,采用的是一种轮询的做法

案例:订单信息保存在 t_order 表中,顾客信息保存在 t_customer 表中。现在我们要查询有过订单的顾客信息

#对于t_customer表中的每行记录,EXISTS子查询都会执行一次,去检查t_order表中是否存在至少一条记录,其customer_id与当前t_customer表中的customer_id相匹配。

#当EXISTS子查询找到至少一条匹配的订单记录时,即o.customer_id = c.customer_id为真的情况下,子查询的结果是TRUE。

#这个TRUE结果会被外层的WHERE子句接收,因此WHERE EXISTS (...)条件得到满足,这意味着当前正在检查的t_customer表中的这一行记录将被视为满足查询条件。

#因此,t_customer表中所有拥有至少一个相关订单记录的客户行都会被包含在外层查询的最终结果集中。
select * 
from t_customer c 
where exists(select * from t_order o where o.customer_id=c.customer_id);

案例:查询没有下过订单的顾客信息

select * 
from t_customer c 
where not exists(select * from t_order o where o.customer_id=c.customer_id);

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

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

相关文章

ASP.NET Core 标识(Identity)框架系列(四):闲聊 JWT 的缺点,和一些解决思路

前言 前面的几篇文章讲了很多 JWT 的优点,但作为技术人员都知道,没有一种技术是万能的 “银弹”,所谓有矛就有盾,相比 Session、Cookie 等传统的身份验证方式,JWT 在拥有很多优点的同时,也有着不可忽视的缺…

第二部分 Python提高—GUI图形用户界面编程(五)

事件处理 文章目录 鼠标和键盘事件多种事件绑定方式汇总组件对象的绑定组件类的绑定 一个GUI 应用整个生命周期都处在一个消息循环(event loop) 中。它等待事件的发生,并作出相应的处理。 Tkinter 提供了用以处理相关事件的机制. 处理函数可被绑定给各个控件的各种…

Go 单元测试之Mysql数据库集成测试

文章目录 一、 sqlmock介绍二、安装三、基本用法四、一个小案例五、Gorm 初始化注意点 一、 sqlmock介绍 sqlmock 是一个用于测试数据库交互的 Go 模拟库。它可以模拟 SQL 查询、插入、更新等操作,并且可以验证 SQL 语句的执行情况,非常适合用于单元测试…

Java基础 - 10 - IO流(二)

一. IO流 - 字符流 1.1 FileReader(文件字符输入流) 作用:以内存为基准,可以把文件中的数据以字符的形式读入到内存中去 构造器说明public FileReader(File file)创建字符输入流管道与源文件接通public FileReader(String pathn…

Linux系统编程开发环境搭建

开发环境搭建 桥接网络(Bridged Network)、网络地址转换(NAT, Network Address Translation)和主机模式网络(Host-only Networking) 在虚拟化环境中,常见的三种网络模式是桥接网络&#xff08…

[Linux_IMX6ULL驱动开发]-总线设备驱动模型

目录 框架分层 总线驱动模型实现 上层驱动代码(leddrv.c)的实现以及解析 交叉依赖的避免 下层驱动的设备文件(board_A_led.c)的实现 下层驱动的驱动文件(chip_demo_gpio.c)的实现 框架分层 在之前,我们对于驱动的框架有过两种不同的框架。第一种框架&#xf…

如何爬出 Kotlin 协程死锁的坑?

作者:悬衡 一、前言 在 Java 中有一个非常经典的死锁问题, 就是明明自己已经占用了线程池, 却还继续去申请它, 自己等自己, 就死锁了, 如下图和代码: // 这段代码将死锁到天荒地老final ExecutorService executorService Executors.newSingleThreadExecutor();exe…

科学突破可能开创6G通信新时代

格拉斯哥大学开发的火柴盒大小的天线可以为全息通话、改进自动驾驶和更好的医疗保健的世界铺平道路。 格拉斯哥大学表示,这种创新的无线通信天线将超材料的独特特性与复杂的信号处理相结合,有助于构建未来的 6G 网络。 数字编码动态超表面天线&#xf…

前端请求发送成功,后端收到null

1、dishId为64,有数据 2、但是后端调试接不到数据,为null 3、形参部分缺少RequestBody接收JSON数据,加上即可

Kimichat炒股:7个提示词案例

●了解股票投资基本概念和知识 什么是有息负债率?用浅显明白的话语针对没有财务会计基础的小白进行解释 Kimi的回答: 有息负债率是一个财务指标,用来衡量一家公司在其负债中有多少是需要支付利息的。简单来说,就是公司借的钱中&…

获取公募基金持仓【数据分析系列博文】

摘要 从指定网址获取公募基金持仓数据,快速解析并存储数据。 (该博文针对自由学习者获取数据;而在投顾、基金、证券等公司,通常有Wind、聚源、通联等厂商采购的数据) 1. 导入必要的库: pandas 用于数据处理…

【第1节】书生·浦语大模型全链路开源开放体系

目录 1 简介2 内容(1)书生浦语大模型发展历程(2)体系(3)亮点(4)全链路体系构建a.数据b 预训练c 微调d 评测e.模型部署f.agent 智能体 3 相关论文解读4 ref 1 简介 书生浦语 InternLM…

深度Q-Learning在算法交易中的应用

一、说明 在《华尔街的随机漫步》一书中,作者伯顿马尔基尔(Burton G. Malkiel)声称:“一只蒙着眼睛的猴子向报纸的财经版面投掷飞镖,可以选择一个与专家精心挑选的投资组合一样好的投资组合。 如果我们让巴甫洛夫的狗接…

RabbitMQ-交换机

文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件,其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标,就像快递站将快递发送到对应的站点,或者网络路由器将网络请求转发到相应的服务器…

使用prompt_toolkit构建交互式命令行工具

prompt_toolkit是一个python库,用于构建命令行工具和终端应用。其官网介绍如下, prompt_toolkit is a library for building powerful interactive command line and terminal applications in Python. 安装命令如下, pip install prompt_to…

CCIA信息系统业务安全服务资质证书介绍条件要求

CCIA(中国通信工业协会)证书是由中国通信工业协会颁发的一种专业资质证书,旨在评估和认证信息化建设企业在信息化项目建设中提供的服务能力。该证书不涉及技术和产品标准,而是重点强调企业在行业服务方向、安全服务意识和专业服务…

基于Springboot的心灵治愈交流平台

基于SpringbootVue的心灵治愈交流平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页展示 系统公告 心理咨询师 心灵专栏 压力测试 小纸条 后台登录界面 后…

CST电磁仿真物体表面的Sheet结构和生成3D Model【基础教程】

由Sheet结构生成3D Model 使用Shell Solid and Thicken Sheet! Modeling > Tools > Shape Tools > Shell Solid or Thicken Sheet Shell Solidor ThickenSheet会根据不同类型的模型提供两种完全不同的功能。 如033.由3D Model生成Cavity 所述&#xff…

量子密钥分发系统设计与实现(一):系统基本架构讨论

经过一段时间讨论,我们了解到量子密钥分发设备是当前量子保密通信系统的基础。从本文开始,我将开启量子密钥分发系统设计与实现系列,详细讨论量子密钥分发设备如何从0到1的搭建。 1.QKD系统总体讨论 QKD系统的核心功能就是为通信双方提供理论…

后端插入数据库问题

IDEA报错:Error updating database. Cause: java.sql.SQLException: Column count doesn’t match value count at row 1 1、看报错消息,SQLException,定位到SQL语句问题 并且看best guess最好猜测,再去找路径下的ShoppingCartMa…