SQL查询语言(3) 嵌套查询

news/2024/11/28 22:37:37/

                                                 如果不进行去重可能会出现一个情况 

嵌套查询根据子查询的结果是否依赖于外层循环,分成相关子查询和不相关子查询

分类 

 IN

笔者总结:一般这种方法适用于查找有共性的元组,同一类事物比如查找和elsa选修相同科目的学生/选修相同科目的女同学。在后面我们也知道in先执行子查询,可以在优化的时候进行选择下推。

例题1

解法1 不相关子查询

查询结果是不是在那个嵌套的返回结果里面,比如说查询和elsa选修同一个系得学生,一个比较简单的方法是先确定elsa在哪个系,然后在这个查询的系中选人。 那么

select sdept 
from student 
where sname  = 'Elsa';//首先先查找Elas学生所在的系

                                                                 将sdept看成是一个集合

                         ​​​​​​​        ​​​​​​​         一定先执行子查询再执行父查询,先取子查询再了解父查询。

 解法2 相关子查询

select sno,sname from student as S 
where exists
(select * from student as t where t.sname  = 'Elsa' AND t.sdept = s.sdept);

 两种方法都可以达到预期的结果 第一种的时间开销主要在查询和选择上 第二中的时间开销在于那个exist函数,需要一个判断返回的操作。

例题2

在比较条件下使用子查询

一般情况下这种查询适用于寻找最高或者最低分

 上一次 出现是在聚集函数中出现 并且聚集函数不能出现在where子句里。

select * from student where sage > ALL(select sage from student where sdept = 'CS');

分组查询第一个属性必须是分组属性 你分的是啥 必须得让别人看到。 

 Exist存在性函数

查看执行结果是否为空

select * from student as S where exists
(select * from student as T 
where S.sname = 'Elsa' and S.SDEPT = T.SDEPT)

 利用exist函数实现任意的功能

关系代数实现

如果是关系代数的话可以用除法来实现:

SELECT Sno FROM Student WHERE NOT EXISTS (
SELECT * FROM SC AS SC1
WHERE SC1.Sno = 'CS-001' AND NOT EXISTS (
SELECT * FROM SC AS SC2
WHERE SC2.Sno = Student.Sno AND SC2.Cno = SC1.Cno));

 子查询结果作为派生的结果

 With语句


http://www.ppmy.cn/news/96062.html

相关文章

生成对抗性网络简介

生成对抗性网络简介 1. 原理1. GANs如何工作2. GAN架构3. 培训GAN4. 艺术家与评论家5. 评估指标6. GAN变体7. GAN应用8. 图像合成(Image synthesis)9. 图像到图像的转换(Image-to-image translation)10. 文本到图像(Text-to-Image)11. 超越图像12. 其他GAN应用参考这篇博…

计算机网络自顶向下方法笔记03

《计算机网络自顶向下方法》学习笔记03:网络层。 网络层提供了主机到主机的通信服务。网络中的每一台主机和路由器都有网络层部分。网络层能够被分解为两部分,数据平面和控制平面。 第四章 网络层:数据平面 1.概述 网络层的任务是取得源主机的报文段…

Shell脚本的基本运算符应用

记录:432 场景:Shell脚本的基本运算符应用。一般包括算术运算符、关系运算符、布尔运算符、逻辑运算符、字符串运算符、文件检测运算符。 版本:CentOS Linux release 7.9.2009。 1.算术运算符 1.1运算符 算术运算符。 :加法…

基于SSM的甜品店商城系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会经济的发展和…

计算机网络四 网络层

网络层的作用 网络层是计算机网络中的一个重要层次,它的主要作用是实现不同网络之间的通信和数据传输。网络层通过将数据分组并添加路由信息,使得数据可以在不同的网络之间传输。 网络层功能 异构网络互连 异构网络互连是指将不同类型的网络连接起来…

Python实现ACO蚁群优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蚁群优化算法(Ant Colony Optimization, ACO)是一种源于大自然生物世界的新的仿生进化算法&#xff0c…

【2024最新】Spring面试题

✅✅作者主页:🔗请你喝杯Java的博客 🔥🔥精选专栏:🔗Java求职一条龙(持续更新中) 💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞 👉 👉你的一键三连是我更新的最大动力❤️❤️ 【2024最新】Spring面试题 一.Spring中@Resource…

【Linxu网络服务】LAMP架构

LAMP架构 一、LAMP架构1.1LAMP架构的组件 二、编译安装Apache httpd服务三、编译安装mysqld服务四、编译安装PHP解析环境六、安装论坛 一、LAMP架构 1.1LAMP架构的组件 (平台)Linux:作为LAMP架构的基础,提供用于支撑Web站点的操作系统,能够与…