SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)

不相关子查询

子查询的查询条件不依赖于父查询,称不相关子查询。子查询可以单独运行的

select stu_id,sex,age
from student t
where sex=(select sexfrom studentwhere stu_id='10023'
)

在这里插入图片描述

相关子查询 ==== 关联子查询

子查询的查询条件依赖于父查询,称为 相关子查询。子查询不能单独运行的
子查询 也称 内部查询
父查询 也称 外部查询
如果子查询的执行依赖于外部查询,通常情况下都是因为子查询中的表用到了外部的表,并进行了条件关联,因此每执行一次外部查询,子查询都要重新计算一次,这样的子查询就称为 关联子查询

在这里插入图片描述

在这里插入图片描述

首先,从父查询中取出table1表的一个元组outer,将元组outer的expr2值传递给子查询。

然后,执行子查询,得到某个值,用这个值代替 子查询的结果 ,父查询由 嵌套查询 变为 只有一层外层查询的简单的查询。

最后,执行这个简单的查询,即得结果。

  1. 相关 vs 不相关

相关子查询 的查询过程 就像 高级语言的 双重For循环一样,先执行一次外层循环,然后执行内层循环完毕后,继续执行外层循环的下一个值。

不相关子查询 就是先一次性把 内层查询 执行,再 执行外层 查询。

在select 语句中,除了 group by和 limit 之前,其他的位置都可以声明 子查询

Exists 、Not Exists

select col1,col2,…
from table1 outer
where Exists (
select col1,col2
from table2
where expr1=outer.expr2
);

在这里插入图片描述

关联子查询通常会和EXISTS操作符一起使用,用来检查在子查询中是否存在满足条件的行。
如果在子查询中不存在满足条件的行
1、条件返回False
2、继续在子查询中查找
3、若最终子查询都没查到,则主查询的记录 就舍弃了
如果在子查询中存在满足条件的行
1、不在子查询中继续查找
2、条件返回True
3、主查询的记录会被保留

NOT EXISTS 关键字 表示 如果不存在某种条件,则返回True,否则返回False

通常 多表查询 比 子查询效率更高一些,
数据搜索引擎 如果子查询能转换城成多表查询,会自动转换。

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

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

相关文章

Oracle open JDK和 Amazon Corretto JDK的区别

Oracle OpenJDK和Amazon Corretto JDK都是基于Java开放源代码项目的发行版,它们之间有一些区别。 1. 来源:Oracle OpenJDK是由Oracle公司领导和支持的,它是Java的官方参考实现之一。而Amazon Corretto JDK是由亚马逊公司开发和支持的&#xf…

2023华为OD机试真题B卷 Python 实现【最长的元音串】

前言 本题使用Python解答,如果需要Java代码,请参考链接 题目 给定一个只由英文字母(a-z, A-Z)组成的字符串,找出其中最长的只包含元音字母(a, e, i, o, u, A, E, I, O, U)的子串,并返回其长度。如果不存在元音子串,则返回0。 输入: 一个由英文字母组成的字符串,…

数据结构刷题训练——链表篇(三)

目录 文章目录 前言 1. 题目一:环形链表Ⅱ 1.1 思路 1.2 分析 1.3 题解 1.4 方法二 2. 题目二:复制带随机指针的链表 2.1 思路 2.2 分析 2.3 题解 总结 前言 在这个专栏博客中,我们将提供丰富的题目资源和解题思路,帮助读者逐步提…

php中的array_filter()函数

php中的array_filter()函数用于筛选数组中的元素,并返回一个新的数组,新数组的元素是所有返回值为true的原数组元素。 array_filter()函数的使用语法如下: array_filter ( array $array [, callable $callback [, int $flag 0 ]] ) : array…

Flutter(八)事件处理与通知

1.原始指针事件处理 一次完整的事件分为三个阶段:手指按下、手指移动、和手指抬起,而更高级别的手势(如点击、双击、拖动等)都是基于这些原始事件的。 Listener 组件 Flutter中可以使用Listener来监听原始触摸事件 Listener({…

The Sandbox 与 D.OASIS 联手打造 D.OASIS 城市

我们非常高兴地宣布与 D.OASIS 建立合作伙伴关系,共同打造无与伦比的娱乐体验:The Sandbox 中的 D.OASIS 城市! 作为合作的一部分,The Sandbox 和D.OASIS将共同打造 D.OASIS 城市,一座充满无限可能的大都市&#xff0…

TDengine + Telegraf + Grafana 实现图形化服务器状态监控

TDengine Telegraf Grafana 实现图形化服务器状态监控 技术栈环境搭建安装tdenginue下载安装包解压文件运行安装文件启动td运行 taosAdapter 安装Telegraf添加yum源安装生成配置文件修改配置文件启动telegraf 安装Grafana直接yum安装安装td数据源配置启动Grafana配置数据源导…

C#声明一个带返回值的委托

1、声明 public delegate string TestDel(string str); 2、使用 TestDel t; t (string str) > str; t (string str) > str "1"; t (string str) > str "2"; t (string str) > str "3"; Console.WriteLine(t ("hhhh&qu…

Java学习笔记26——集合进阶4

Collections Collections的概述和使用特点常用方法 Collections的概述和使用 在java.util下 注意 Collection是集合的顶层接口,而Collections是一个具体的类 特点 在Collections里面全是静态方法,包含对集合进行操作的多态方法,可以看做针…

CentOS 7中,配置了Oracle jdk,但是使用java -version验证时,出现的版本是OpenJDK,如何解决?

1.首先,检查已安装的jdk版本 sudo yum list installed | grep java2.移除、卸载圈红的系统自带的openjdk sudo yum remove java-1.7.0-openjdk.x86_64 sudo yum remove java-1.7.0-openjdk-headless.x86_64 sudo yum remove java-1.8.0-openjdk.x86_64 sudo yum r…

安卓:MMKV——键值存储库

目录 一、MMKV介绍 1.特点和优势: 2.使用指南: 3.依赖包: 二、MMKV的常用方法 1、初始化和获取实例: 2、存储数据: 3、读取数据 4、删除数据 5、其他操作: 三、MMKV的使用例子 MainActivity&#xff…

文件上传漏洞(webshell)

一、防护 1、防护 1、判断文件后缀,为图片的话才让上传成功。 2、解析文件内容(文件幻数)判断文件头和文件尾部是否一致 幻数 常见的 3、隐藏按钮(带上code唯一值) 4、二次渲染(类似拿着你的图片&#xff…

super父类 事物

一个没有事物的方法。 调用他的父类里有事物的方法。 无论this 和 super 都会让父类事物方法没有事物。 如果写了super.class 文件里面,就是super调用。 如果没写,就是this调用,坑爹 测试,把父类注入,事物才生效。

kubeasz在线安装K8S集群单master

1.基础系统配置 确保在干净的系统上开始安装,不能使用曾经装过kubeadm或其他k8s发行版的环境 系统是Ubuntu 或者CentOS 7 2.下载文件 2.1 下载工具脚本ezdown,举例使用kubeasz版本3.5.0 #此版本默认安装的是 K8S v1.26.0 export release3.5.0 wget h…

[免费在线] 将 PDF 转换为 Excel 或 Excel 转换为 PDF | 5 工具

有了免费的在线 PDF 转换器,您可以轻松免费在线将 PDF 转换为 Excel 或 Excel 转换为 PDF。这篇文章为您筛选了 5 个最常用的工具。要从存储介质恢复错误删除或丢失的 PDF 文档、Excel 电子表格、Word 文件或任何其他文件,您可以使用免费的数据恢复程序 …

SSM整合

目录 一、SSM整合1.1 步骤分析1.2 常见疑惑1.3 准备工作1.4 相关配置1.5 编写Controller,Service,Dao 二、案例2.1 响应格式统一2.2 查询所有用户2.3 分页查询用户2.4 插入用户2.5 删除用户2.6 更新用户 三、异常统一处理四、拦截器五、声明式事务六、AOP 一、SSM整…

leetcode2809. 使数组和小于等于 x 的最少时间 排序+0-1背包

https://leetcode.cn/problems/minimum-time-to-make-array-sum-at-most-x/ 给你两个长度相等下标从 0 开始的整数数组 nums1 和 nums2 。每一秒&#xff0c;对于所有下标 0 < i < nums1.length &#xff0c;nums1[i] 的值都增加 nums2[i] 。操作 完成后 &#xff0c;你…

DOM基础获取元素+事件基础+操作元素

一.DOM简介 DOM&#xff0c;全称“Document Object Model&#xff08;文档对象模型&#xff09;”&#xff0c;它是由W3C定义的一个标准。 在实际开发中&#xff0c;我们有时候需要实现鼠标移到某个元素上面时就改变颜色&#xff0c;或者动态添加元素或者删除元素等。其实这些效…

c++开发 高质量 面试题分享

1 编译和解释型语言分别有什么特点,各举例一种类型 编译型语言和解释型语言是两种不同的程序设计语言的类型,它们的主要区别在于程序的执行方式和效率。编译型语言是指将源代码通过编译器转换成机器码,然后直接在目标平台上运行的语言。解释型语言是指将源代码通过解释器逐…

AOP前置通知加return后的影响

总结1 前置通知before没有返回值&#xff0c;返回类型为void&#xff0c;即return&#xff1b;所以加不加return都可&#xff0c;无非是返回个空。因此不影响目标代码及其它通知执行。 总结2 前置通知报错的话&#xff0c;目标代码和后置通知不会执行&#xff0c;但是最终通…