• SQL Serve---嵌套查询


    定义

    嵌套查询:主要用于复杂的查询中。在SQL语言中,一个Select From Where语句称为一个查询块,将一个查询块嵌套在另一个查询的Where子句或Having短语中的查询称为嵌套查询

    子查询的类型
    使用别名的子查询
    使用INNOT IN的子查询
    使用比较运算符的子查询
    使用ANYALL修改的比较运算符
    使用EXISTSNOT EXISTS的子查询

    --列出tb_student表中和“陈凯”年龄相同的学生的学号和姓名

    年龄:year(getdate())-year(birthday)

    1. --列出tb_student表中和“陈凯”年龄相同的学生的学号和姓名
    2. select s1.sno,s1.sn
    3. from tb_student as s1
    4. where year(getdate())-year(birthday)=
    5. (select year(getdate())-year(birthday)
    6. from tb_student as s2
    7. where s2.sn=‘陈凯’)

    --在选修c02课程成绩大于该课平均成绩的学生学号,姓名,成绩

    1. --在选修c02课程成绩大于该课平均成绩的学生学号(),姓名,成绩
    2. select s.sno,sn,s1.score
    3. from tb_student s,
    4. (select sno,score
    5. from tb_score
    6. where cno='c02' and score>(select avg(score)
    7. from tb_score where cno='c02'))as s1
    8. where s.sno=s1.sno
    in:返回值是一个以及一个以上的
    --查询软件 3班同学所选所有课程的名称
    1. select cn from tb_course
    2. where cno IN(select cno from tb_ score
    3. where left(sno,10)=2015010103')
    ¯ 查询不选c02课程的学生的学号、姓名、系别
    1. select sno,sn,dept from tb_student
    2. where sno NOT IN (select sno from tb_score
    3. where cno=‘c02')

    --查询考取最高分的学生的学号、课号、课名,成绩

    1. select sno,s.cno,cn,score
    2. from tb_score s,tb_course c
    3. Where s.cno=c.cno and score =
    4. (select max(score) from tb_score)
    -- 年龄高于平均年龄的所有学生的学号和姓名
    1. select sno,sn
    2. from tb_student
    3. where year(getdate())-year(birthday) >
    4. (select avg(year(getdate())-year(birthday) )
    5. from tb_student)

    注意:

    >all(1,2,3) :表示大于3(表示大于最大值)

    >any(1,2,3): 表示大于最小值

    -- 查找某门课程成绩高于或等于任何一门课程最高成绩的学生学号
    1. select distinct sno,cno,score
    2. from tb_score
    3. Where score >= any
    4. (select max(score)
    5. from tb_score
    6. group by cno)
    --在 tb_student 表中查询 tb_score 表中有成绩的学生学号和 姓名
    1. select sno,sn from tb_student
    2. where sno =
    3. any(select sno from tb_score)
    -- tb_score 表中 c01 c02两科成绩都大于60分的同学学号。
    1. select sno
    2. from tb_score
    3. where cno='c01' and score>60 and sno in
    4. ( select sno
    5. from tb_score
    6. where cno='c02' and score>60 )

  • 相关阅读:
    前端国际化的思考与实践
    全能型开源数据库监控平台 - lepus
    TS封装小程序wx.showModal弹窗及调用
    呼叫中心系统信息发送功能的应用
    网络安全笔记-网络设备专场(路由器、交换机、防火墙)
    P272 小码君统统计字母频率-1
    10.18~10.22数电第二次实验
    腾讯高工用 4 部分就讲清楚了 Spring 全家桶 + 微服务
    工作积累——Web请求中使用ThreadLocal遇见的问题
    【Java】刚刚!突然!紧急通知!垃圾回收!
  • 原文地址:https://blog.csdn.net/m0_74289471/article/details/137915450