子查询之一(单行子查询, 多行子查询)

1. 子查询

子查询是指一个查询语句嵌套在另一个查询语句内部的查询.这个特性在MySQL4.1开始引入.

SQL中子查询的使用大大增强了SELECT查询的能力.因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得到一个数据结果,然后与这个数据结果进行比较.

2. 子查询的基本使用

例 : 

dcade887bbef422796397c322ddb4e64.png

注 : 

  • 子查询在主查询之前一次执行完成.
  • 子查询的结果被主查询使用.
  • 子查询在包含在括号内.
  • 将子查询放在比较条件的右侧.
  • 单行操作符对应单行子查询,多行操作符对应多行子查询.

3. 子查询的分类

(1). 方式1 : 

我们可以按照子查询的结果返回一条还是多条记录,分为单行子查询和多行子查询.

(2). 方式2 : 

我们按照子查询是否被执行多次,是否依赖于主查询,将子查询分为相关子查询和不相关子查询.

  • 子查询从数据表中查询到了数据结果,如果这个数据结果只执行了一次,然后这个数据作为主查询的条件执行,则这样的子查询叫作不相关子查询.比如上述的图片.
  • 如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,再将结果反馈给外部,这种嵌套的执行方式称为相关子查询.

4. 单行子查询

(1). 单行子查询的操作符

=   >   >=   <   <=  <>

(2). 例

ba72e76d61944fdd93f601f9cba3a8d6.png

注 : 

  • 单行子查询,只返回一条记录,并作为主查询的条件进行比较.
  • 使用了单行比较操作符>.
  • 不相关子查询,数据结果仅执行一次.且查询结果不依赖于主查询.

(3). 子查询中的空值问题

e13c2d22778c4946aa842d94ed316778.png

注 : 

  • 子查询查询到的结果为null.由于单行子查询运算符遇到null运算的结果都为null.所以查询不到任何记录.

(4). 非法使用子查询

例 : 

c817b93bb2544982aa5aed1667dc5dc0.png

注 : 

  • 由于该子查询查到多行记录,而主查询条件中使用单行比较操作符,所以会报错.

5. 多行子查询

(1). 概念

  • 也称为集合比较子查询
  • 子查询返回多行.
  • 使用多行比较操作符.

(2). 多行比较操作符

IN : 等于列表中的任意一个.

ANY : 需要和单行操作符一起使用,和子查询返回的某一个值比较.

ALL : 需要和单行操作符一起使用,和子查询返回的所有值进行比较.

SOME : 实际上是ANY的别名,作用相同,一般使用ANY.

(3). 例

(4). 空值问题

db82a4042c674f27a98dcb2206d5fc3d.png

注 : 

  • 如果子查询返回的结果集中有null,且在主查询的条件中使用多行比较操作符时,也将返回null.所以查询不到任何记录.

 

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

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

相关文章

【go项目01_学习记录08】

学习记录 1 模板文件1.1 articlesStoreHandler() 使用模板文件1.2 统一模板 1 模板文件 重构 articlesCreateHandler() 和 articlesStoreHandler() 函数&#xff0c;将 HTML 抽离并放置于独立的模板文件中。 1.1 articlesStoreHandler() 使用模板文件 . . . func articlesSt…

最新:Lodash 严重安全漏洞背后你不得不知道的 JavaScript 知识

可能有信息敏感的同学已经了解到&#xff1a;Lodash 库爆出严重安全漏洞&#xff0c;波及 400万 项目。这个漏洞使得 lodash “连夜”发版以解决潜在问题&#xff0c;并强烈建议开发者升级版本。 我们在忙着“看热闹”或者“”升级版本”的同时&#xff0c;静下心来想&#xf…

【退役之重学Java】如何解决消息持续积压等问题

一、将读写数据库等耗时的操作&#xff0c;从消费者逻辑中抽取出来&#xff0c;专门部署机器去完成这部分操作。

FebHost:什么是域名DNS服务器?

域名服务器是一种将域名转换为IP地址的计算机。在域名系统&#xff08;DNS&#xff09;中&#xff0c;它起着至关重要的作用。用户只需在浏览器的地址栏输入域名&#xff0c;而无需手动输入网站服务器的IP地址&#xff0c;就可以访问网站。 每个已注册的域名都必须在其DNS记录…

使用Python读取las点云,写入las点云,无损坐标精度

目录 1 为什么要写这个博文2 提出一些关键问题3 给出全部代码安装依赖源码&#xff08;laspy v2.x&#xff09; 1 为什么要写这个博文 搜索使用python读写las点云数据&#xff0c;可以找到很多结果。但是&#xff01; 有些只是简单的demo&#xff0c;且没有发现/说明可能遇到的…

【第16章】spring-mvc之多文件上传

文章目录 前言一、文件大小限制二、前端三、后端总结 前言 本章在上篇文件的上传基础上就行扩展,多文件上传、多线程处理&#xff0c;所有的文件上传成功则返回成功。 一、文件大小限制 <?xml version"1.0" encoding"UTF-8"?> <web-app xmlns…

震惊,现在面试都加科技与狠货了

震惊&#xff0c;现在面试都加科技与狠货了 生成式AI盛行的现在&#xff0c;程序员找工作变容易了吗我和老痒喝着大酒&#xff0c;吃着他的高升宴&#xff0c;听他说他面试的各种细节&#xff0c;老狗我只恨自己动作慢了一步&#xff0c;不然现在在那侃侃而谈的就是我了。 面试…

守护数字疆域:2024年网络安全报告深度解读

在这个数据如潮涌动的数字时代&#xff0c;每一比特信息都可能是攻防双方角力的战场。《Check Point 2024年网络安全报告》不但为我们揭示了过去一年网络安全世界的风云变幻&#xff0c;更以前瞻性的视角勾勒出未来的挑战与机遇。此刻&#xff0c;让我们携手深潜这份权威指南的…

Redis-6 三种集群模式:主从模式、哨兵模式、分片集群

主从模式 一.介绍一下redis的主从同步 单节点的redis的并发能力是有上限的&#xff0c;要实现高并发&#xff0c;就要搭建主从集群&#xff0c;实现读写分离。通常是一主多从&#xff0c;主节点负责写数据&#xff0c;从节点负责读数据。 二.介绍一下主从模式同步数据的流程…

GIS找工作:天津测绘院24届春招Offer面经

本文介绍2024届春招中&#xff0c;天津市测绘院有限公司的1场面试的提问问题&#xff0c;以及后续体检环节的相关流程等。 2024年04月投递了天津市测绘院有限公司的软件开发类岗位&#xff0c;暂不清楚所在部门。目前完成了一面&#xff0c;并有幸获得Offer&#xff1b;在这里记…

分位数回归的基本原理和特点

基本模型及解释 分位数回归经典模型是由Koenker和Bassett (1978b)引入的&#xff0c;它从位置模型中的普通分位数(也称为“百分位数”)的概念扩展到更一般的一类线性模型&#xff0c;其中条件分位数具有线性形式。为了简单地回忆一下普通分位数&#xff0c;考虑一个实数随机变…

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接&#xff1a;QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数&#xff0c;指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片&#xff0c;并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

java中建造者模式和模版模式的区别?可以用代码实例说明

建造者模式&#xff08;Builder Pattern&#xff09;和模板模式&#xff08;Template Pattern&#xff09;在Java中都是行为设计模式&#xff0c;但它们的用途和目的有所不同。以下是两者的主要区别&#xff0c;并通过代码实例来说明。 建造者模式&#xff08;Builder Pattern…

双展联动—第四届中国跨境电商及新电商交易博览会强势来袭

双展联动产业升级 ——第四届中国跨境电商及新电商交易博览会强势来袭 万商云集有福之州&#xff0c;掘金万亿蓝海市场。备受瞩目的“第四届中国跨境电商及新电商交易博览会暨2024中国户外生活及休闲运动用品交易博览会”将于2024年9月21-23日在福建福州海峡国际会展中心盛大召…

【数据库】存储过程、函数、触发器

按照要求实现员工管理数据库系统中的指定操作&#xff1a;1、创建一个数据库 staff&#xff0c;并在数据库中创建以下四张表&#xff1a; 员工表 employee&#xff08;员工编号id,姓名userName,出生日期birthDate,身份证号idCard,登录名称loginName,登录密码password,手机号mo…

基于Vite创建项目

1.npm设置镜像源为国内淘宝源 npm config set registry https://registry.npmmirror.com 2.vite官方中文文档 Vite | 下一代的前端工具链 3.创建项目 npm create vitelatest my-app 接下来按照提示操作就可以&#xff0c;最后 npm run dev 就可以启动项目了 4.安装依赖 …

接口性能测试 —— Jmeter并发与持续性压测!

接口压测的方式&#xff1a; 1、同时并发&#xff1a;设置线程组、执行时间、循环次数&#xff0c;这种方式可以控制接口请求的次数 2、持续压测&#xff1a;设置线程组、循环次数&#xff0c;勾选“永远”&#xff0c;调度器&#xff08;持续时间&#xff09;&#xff0c;这种…

汽车电子零部件(13):BMS电池管理系统

前言: 电池管理系统(BMS)确保电动汽车(EV)的能量分配安全高效。目前流行电动汽车中使用的有四种主要BMS架构,BMS与充电基础设施互为集成关系。BMS主要管理 的是电池组,电池组由很多电芯组成,比如下图是H/EV电池组的主要部件,显示了电池、连接、控制电路和包装的总体布…

软件技术主要学什么课程

软件技术专业主要学习的课程和内容有编程语言、数据结构与算法、数据库技术等&#xff0c;以下是上大学网( www.sdaxue.com)整理的软件技术主要学什么课程&#xff0c;供大家参考&#xff01; 编程语言&#xff1a;掌握一种或多种编程语言&#xff0c;如C#、Java、Python、C等&…

MySQL中的事务隔离级别

事务隔离级别 未提交读(Read uncommitted)是最低的隔离级别。通过名字我们就可以知道&#xff0c;在这种事务隔离级别下&#xff0c;一个事务可以读到另外一个事务未提交的数据。这种隔离级别下会存在幻读、不可重复读和脏读的问题。提交读(Read committed)也可以翻译成读已提交…