一文讲懂SQL子查询

一文讲懂SQL子查询

大家好,我是宁一。

今天讲解SQL教程第18课:子查询。

SQL语句可以嵌套,最常见的就是查询语句的嵌套。

基本语法:

SELECT FROM WHERE( SELECT FROM );

我们一般称外面嵌套的语句为主查询,里面被嵌套的语句为子查询,有时也会叫外查询、内查询,大家知道意思就好。

子查询要用括号括起来。子查询不仅可以放在WHERE的后面,还可以放在SELECT、FROM的后面,我们一个个来讲解。

1、子查询+WHERE子句

SQL执行时,会先执行括号内的子查询,子查询最常与WHERE子句结合使用。子查询的结果作为WHERE子句的筛选条件,完成更复杂的数据检索。

实例:在Students表中,找出所有在”宁一”后面出生的学生

实例解析:需要先确定”宁一”的生日,再将生日作为WHERE筛选条件,得到最终数据。

第一步:找到”宁一”的生日

SELECT SageFROM StudentsWHERE Sname = “宁一”

第二步:将生日作为WHERE筛选条件,得到最终数据,子查询语句要用括号括起来。

SELECT *FROM StudentsWHERE Sage > ( SELECT Sage FROM Students WHERE Sname = “宁一”)

2、子查询 + SELECT 语句

子查询还可以与 SELECT 语句结合使用,子查询返回的结果,会作为列显示在结果集中。

SELECT语句的子查询经常与聚合函数结合使用。因为我们使用聚合函数的时候,记录会合成一条,其它数据细节就不能显示了。

比如:我们想要查看学生表中所有的学生姓名、学生生日、学生的最大生日。

示例结果:

错误写法:

SELECT Sname,Sage,Max(Sage)FROM Students

像上面这样写是会报错的,因为聚合函数与其他表中的列(Sname,Sage),同时放在SELECT的后面。需要用GROUP BY语句将这些表中的列(Sname,Sage)分组。

上面的语句后面加上 GROUP BY Sname,Sage 就可以了。

但是这样写,会将每组的数据聚合成1条数据,比如每组有3条数据,使用聚合函数MAX()+GROUP BY,最终每组只会显示1条最大值的数据。

我们需要展现Students表中所有的学生,这样写不能满足我们的需求。

正确写法:结合子查询来实现。

SELECT Sname, Sage, (SELECT Max(Sage) FROM Students) AS MaxageFROM Students

3、子查询+FROM子句

子查询与FROM子句结合使用,子查询结果被当成了一个“表”,可以用SELECT语句做进一步的筛查。

比如:我们先写一个SELECT查询语句

SELECT Sid, ‘student’ AS statusFROM StudentsWHERE Sid <= 5

将上面的查询语句放在FROM的后面,则上面查询到的结果,就会被当成一个“表”。

SELECT Sid,statusFROM ( SELECT Sid, ‘student’ AS status FROM Students WHERE Sid 2

这里有一个特别要注意的地方,放在FROM后面的子查询,必须要加别名。

复杂的子查询再嵌套进 FROM 里会让整个查询看起来过于复杂,我们一般会将子查询结果储存为视图,然后再直接使用视图作为来源表,视图会SQL高阶课程中详细讲解。

其实子查询就是查询语句嵌套,没有什么新的东西,只是多了一个层级,由内向外地一层层梳理就会很清楚了。

作业:结合Students表,从Teachers表中找出当班主任的老师(通过子查询实现)。

作业解析:先从Students表中,找出所有班主任的Tid并去重,将查询结果作为筛选条件,放在WHERE语句中。

SELECT *FROM TeachersWHERE Tid IN ( SELECT DISTINCT Tid FROM Students)

点击关注,更新课程第一时间通知哦~

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月24日
下一篇 2022年6月24日

相关推荐

  • PHP中高级面试题 – 第三天

    一、简述一下MongoDB的应用场景 mongodb 支持副本集、索引、自动分片,可以保证较高的性能和可用性。 更高的写入负载 默认情况下,MongoDB 更侧重高数据写入性能,而…

    2022年6月12日
  • 磨砺以须,匠心成就可持续发展-九坤投资王琛:以科技驱动打造属于中国的量化竞争力

    近年来,国内量化投资行业经历了风云激荡的发展历程,整体规模突破万亿,跃入发展新阶段。九坤投资作为国内成立最早的一批量化私募管理人,过去十年间与中国资本市场相伴成长,深耕量化领域,实…

    2022年8月4日
  • 北京鼓励消费者换新能源车 最高补贴1万元

    【北京鼓励消费者换新能源车 最高补贴1万元】财联社6月26日电,北京市商务局等7部门印发《北京市关于鼓励汽车更新换代消费的方案》,满足条件将可获补贴,最高1万元。

    2022年6月29日
  • 2022年上海中考时间安排及考试科目 2022年上海中考时间安排表

    2022年3月份以来,上海发生了新一轮疫情,而且疫情形势还比较严峻,大家的工作和生活都受到了较大影响,也有不少家长担心今年中考也会受到影响,下面大家就和小编一起了解一下2022年上…

    2022年7月26日
  • 初三学生数学怎样学习才能在中考中取得高分?

    初三数学想要高分,如果没什么天赋的话,只能是大量刷题。 数学,一上初中,就会发现难度有了质的变化。初一还会有人考满分,但是到了初二,几乎没什么学生能考到满分了。初三,数学要想高分,…

    2022年6月5日
  • 奇安信成立新公司 经营范围含区块链技术相关软件和服务

    企查查APP显示,7月14日,黑龙江奇安信科技有限公司成立,注册资本1500万元,经营范围包含网络与信息安全软件开发;区块链技术相关软件和服务;计算机系统服务;信息安全设备销售;互…

    2022年7月16日
  • 苹果手机选购指南之芯片篇

    手机好用不好用,卡不卡,关键还是得看芯片,手机芯片不像电脑cpu,手机芯片是由cpu,GPU,等等组合而成的一个集合体,手机芯片里的cpu就是电脑cpu,GPU是显卡,cpu识别数…

    2022年7月15日
  • 贷款老被拒绝咋回事怎么解决 看完可以帮到你!

    在如今,有的人申请贷款的时候,会经常被贷款机构拒绝,一般来说,遇到这种情况,大家要找出问题的所在,那么贷款老被拒绝咋回事怎么解决?下文就来带大家了解一下。 如果申请贷款总是被拒,多…

    2022年10月14日
  • 逆转马刺,探花状态回温,伊森前途星光

    夏联继续,工作日的早7点,火箭对阵马刺,想必大部分朋友应该还在睡梦中,小编早早的起床看起了直播,主要看史密斯的表现,伊森和泰泰通过夏联两场比赛看下来,问题不大,常规赛还是有机会打进…

    2022年7月18日
  • java 工作流 详解

    工作流基本概念: 什么是工作流? 工作流:两个或两个以上的人,为了共同的目标,连续的以串行或并行的方式去完成某一业务。 业务:工作流所指业务涵盖了与经营相关的活动   串行或并行:…

    2022年6月21日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息