3. 多层select的使用:子查询的定义、无关子查询、相关子查询
文章目录
- 子查询的定义
- 无关子查询
- 1. 查询与“张三”在同一个系学习的学生的学号、姓名和专业。
- 2. 查询 1号课的考试成绩 比“张三”高的学生的学号和姓名。
- 3. 查询计算机系年龄最大的学生的学号和姓名。(用了ALL)
- 4. 查询选修了“1”号课程的学生姓名和所在系。
- 5.查询有2个以上学生平均成绩超过60分的系
- 相关子查询
- 1. 查询成绩比该课的平均成绩低的学生的学号、课程号、成绩。
- 2. 查询有2门以上课程的成绩在80分以上的学生的学号、姓名、专业。
- 带有EXISTS的子查询(存在性测试)
- 使用子查询时要注意以下几点
子查询的定义
SELECT语句可以嵌套在其他许多语句中,这些语句包括SELECT、INSERT、UPDATE及DELETE等,
这些嵌套的SELECT语句就被称为子查询。
无关子查询
无关子查询在外部查询之前执行,然后返回数据供外部查询使用,无关子查询中不包含对于外部查询的任何引用
。
1. 查询与“张三”在同一个系学习的学生的学号、姓名和专业。
SELECT sno, sname, sdept
FROM student
WHERE sdept IN(SELECT sdept FROM studentWHERE sname='张三')
2. 查询 1号课的考试成绩 比“张三”高的学生的学号和姓名。
SELECT student.sno,sname
FROM student,sc
WHERE student.sno = sc.sno and cno='1'
and score>(SELECT score FROM sc WHERE cno='1' and sno =(SELECT sno FROM student WHERE sname='张三'))
3. 查询计算机系年龄最大的学生的学号和姓名。(用了ALL)
SELECT sno,sname
FROM student
WHERE sage>= ALL(SELECT sage FROM student WHERE sdept='CS')
4. 查询选修了“1”号课程的学生姓名和所在系。
SELECT sname,sdept
FROM student
WHERE sno IN(SELECT sno FROM sc WHERE cno='1')
5.查询有2个以上学生平均成绩超过60分的系
SELECT sdept
FROM student,(SELECT sno FROM SC GROUP BY sno HAVING AVG(score)>=60) s --派生表ss为成绩大于60分的学生的学号
WHERE student.sno=s.sno
GROUP BY sdept
HAVING COUNT(*)>=2
相关子查询
在相关子查询中,子查询的执行依赖于外部查询,多数情况下是子查询的WHERE子句中引用了外部查询的表。
相关子查询的执行过程与无关子查询完全不同,无关子查询中子查询只执行一次,而相关子查询中的子查询需要重复地执行。
相关子查询的执行过程:
①子查询为外部查询的每一行执行一次,外部查询将子查询引用的列的值传给子查询。
②如果子查询的任何行与其匹配,外部查询就返回结果行。
③再回到第一步,直到处理完外部表的每一行。
1. 查询成绩比该课的平均成绩低的学生的学号、课程号、成绩。
SELECT sno,cno,score
FROM sc a
WHERE score<(SELECT avg(score) FROM sc b WHERE b.cno=a.cno)
2. 查询有2门以上课程的成绩在80分以上的学生的学号、姓名、专业。
SELECT sno,sname, specialty
FROM student s
WHERE (SELECT COUNT(*) FROM sc WHERE sc.sno=s.sno and score >=80)>=2
带有EXISTS的子查询(存在性测试)
运算符EXISTS
:
如果在子查询的结果集内包含有一行或多行,则存在性测试返回TRUE
如果不包含任何行,则返回FALSE。
NOT EXISTS
: 将对存在性测试结果取反。
查询所有选修了‘1’号课程的学生姓名。SELECT sname FROM student
WHERE EXISTS (SELECT * FROM scWHERE sno=student.sno AND cno= ‘1')
使用子查询时要注意以下几点
3. 多层select的使用:子查询的定义、无关子查询、相关子查询相关推荐
- SQL——相关子查询和不相关子查询
SQL--相关子查询和不相关子查询 不相关子查询 相关子查询 在SQL中经常使用在"FROM/WHERE"字句中包含一个形如"SELECT-FROM-WHERE" ...
- SQL子查询总结:相关子查询与非相关子查询有什么区别
如果一个select语句能够返回单个值或者一列值,且该select语句嵌套在另一个SQL语句(例如select语句.insert语句.update语句或者delete语句)中,那么该select语句成 ...
- SQL相关子查询是什么?和嵌套子查询有什么区别?
文章目录 两者的各种叫法 相关子查询MySQL解释 相关子查询Wikipedia解释 相关子查询执行步骤拆解 相关子查询和嵌套查询的区别 参考资料 两者的各种叫法 相关子查询叫做:Correlated ...
- 嵌套查询:相关子查询和非相关子查询
嵌套查询 一个select-From-Where查询语句块可以嵌套在另一个select-From-Where查询块的Where子句中,称为嵌套查询. 外层查询称为父查询,主查询.内层查询称为子查询,从 ...
- 翻译:通向T-SQL的阶梯:超越基础水平3:建立相关子查询
原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/105972/ 原文作者:Gregory Larsen 该系列 本文是楼 ...
- T-SQL的进阶:超越基本级别3:构建相关子查询——701小组
T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...
- 什么是 相关子查询 和 非相关子查询 ?
1.相关子查询: 先执行主查询,再针对主查询返回的每一行数据执行子查询,如果子查询能够返回行,则这条记录就保留,否则就不保留. --举例1:相关子查询查询:查询所有是领导的员工信息 select * ...
- 分页查询有数据无数据源问题
分页查询有数据无数据源问题 使用前端查询有数据但无数据源问题 问题详情 具体问题演示 代码演示 解决办法 使用前端查询有数据但无数据源问题 问题详情 表格有自带的分页功能,后台分页主要是通过传{lim ...
- mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询
结构化查询语言(sql) SQL概念和规则 关键字:SQL语言保留的字符串(SELECT FORM) 语句:一条完整的SQL命令(SELECT * FROM dept) 子句:部分的SQL语句,通常由 ...
最新文章
- 8.0 C++远征:对象数组
- [Firebug]用来武装Firebug的十三款Firefox插件
- springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
- 基于实时深度学习的推荐系统架构设计和技术演进
- java简单的for循环多线程
- 第一阶段:前端开发_Mysql——表与表之间的关系
- 大数据学习知识点导图
- pytorch修改tensor的维度(修改为任意维度,或单纯的增减维度)
- “通讯录不属于用户隐私”?今日头条:绝对不认可这个说法
- 【算法】八皇后问题 Python实现
- TeaVM编译耗时太长,为节省时间,跳过test
- 生成对抗神经网络基本思想
- android 休眠任务不执行_Android休眠机制
- 别出心裁的Linux系统调用学习法
- nginx worker shutting down状态超时退出配置
- 甲骨文服务器(Oracle Cloud)开启root用户登录
- OpenCV4 Viz模块使用学习(一)
- Excel给证件照换底色,红、蓝、白底任你换,看完涨知识了
- 最新青龙面板拉库JS
- Bootstrap布局之移动开发基础加容器
热门文章
- 已知两点和弧长lisp_已知圆心和两点画圆弧(算法)(计算机图形)(C#)
- 记录SQL查询汉字、字母、数字
- ZETA与RFID在供应链物流场景中是否可以互补?
- 站外seo优化有用吗?值得投入时间和精力吗?
- 用PyQt5编辑 12306车票信息爬取程序
- 计算机程序设计c++ 11-1:派生类
- html5 画面分割,一种高清视频多画面分割裂屏显示的解决方法
- Centos7下Ceph的多机部署
- (本博客软件无法安装)install failed container error 的解决方法
- 2018.06.19 订单明细修改