66.子查询基本语法

本文通过一个实际场景展示了如何使用SQL查询语句从学生信息表和成绩表中快速找出成绩优异的学生,以及如何调整条件筛选出更高分的学生。同时,还介绍了如何找到未获奖的学生名单,强调了SQL中IN和NOT IN子句的运用。
摘要由CSDN通过智能技术生成
  1. 没错,今天的你,依旧还是那个坐等下班的大学辅导员,但是下班之前领导让你统计出成绩大于等于90的学生便于后期奖学金的颁发,给了你以下两个表。分别是是学生信息表 stu_infor 和 学生成绩表 stu_score 在这里插入图片描述
  2. 既然要找成绩大于等于90的学生,那就直接输入:select stuid from stu_score where score>=90;,之后再根据得到的 stuid ,到 stu_infor 表中找出对应的学生信息。 在这里插入图片描述
  3. 真要像上面这样麻烦么?漏,输入:select * from stu_infor where stuid in( select stuid from stu_score where score>=90);,直接一步到位,领导直夸干的漂亮。在这里插入图片描述
  4. 领导一看得奖的人太多,超出了奖学金的预算,于是提高条件,给成绩大于等于98的学生颁发奖学金,怎么办?输入:select * from stu_infor where stuid in( select stuid from stu_score where score>=98);,看到只有一位同学符合条件,领导心满意足。在这里插入图片描述
  5. 但是作为一个尽职尽责的辅导员,你要找没有得到奖学金的同学,来一个单独对话,直接在 in 前面加上 not 即可,得到下表在这里插入图片描述
  6. 补充一点,如果结果只有一个的时候,你可以用:select * from stu_infor where stuid=(select stuid from stu_score where score>=98);,得到的结果依然是上图,但是,一般而言都用 in ,谁一开始知道结果有几个人了?在这里插入图片描述
    小结
    select * from stu_infor where stuid in( select stuid from stu_score where score>=90); 怎么理解?
    后面的半句 select stuid from stu_score where score>=90 ,得到符合条件的 stuid ,
    前面的半句 select * from stu_infor where stuid in ,得到学生信息且要保证其 stuid 在后半句得到的 stuid 的范围里。

点击这里,查看 in 的其他用法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

头疼小宇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值