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