关键语法讲解中查询没有学全所有课的同学的学号、姓名的一个问题

来源:3-19 关键语法讲解

Whizwolf_mao

2019-08-28

关键语法讲解中查询没有学全所有课的同学的学号、姓名的一个问题
select stu.student_id,stu.name
from
score s,
student stu
where s.student_id = stu.student_id
group by s.student_id
having count()< #注意此处HAVING过滤组s.student_id,所以count()代指某student_id下的所有course记录数,不知道group by用stu.student_id可不可行?
(
select count(*) from course
)

如果把此SQL中的group by s.student_id替换成group by stu.student_id,count(*) 的值是不是就是1?是不是就不能代指某student_id下的所有course记录数了?

写回答

1回答

翔仔

2019-08-29

同学好,赞探索的精神,其实你可以直接试试执行一下就直到结果了,就会发现其实两者得到的结果都是一样的,因为select stu.student_id,stu.name from score s, student stu where s.student_id = stu.student_id group by s.student_id; 或者 select stu.student_id,stu.name from score s, student stu where s.student_id = stu.student_id group by stu.student_id;

都是一样的结果:)

2
2
翔仔
回复
张提
因为本身就是做统计,而且 s.student_id = stu.student_id ,所以两边记录数是一一对应的,哪边都可以呀
2020-04-13
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8463 学习 · 1872 问题

查看课程