请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

关键语法讲解中查询没有学全所有课的同学的学号、姓名的一个问题
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记录数了?

正在回答 回答被采纳积分+3

1回答

翔仔 2019-08-29 00:21:52

同学好,赞探索的精神,其实你可以直接试试执行一下就直到结果了,就会发现其实两者得到的结果都是一样的,因为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 回复 有任何疑惑可以回复我~
  • 张提 #1
    我也想问下,既然是一样的,那having count(*) 为什么是score表中的记录数,而不是student表中的记录数
    回复 有任何疑惑可以回复我~ 2020-04-11 16:13:19
  • 翔仔 回复 张提 #2
    因为本身就是做统计,而且 s.student_id = stu.student_id  ,所以两边记录数是一一对应的,哪边都可以呀
    回复 有任何疑惑可以回复我~ 2020-04-13 17:10:01
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信