mysql 查找课程最高分_SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分...

展开全部

你好,你展示的第一种sql查询方案,其意思是:62616964757a686964616fe78988e69d8331333332643934

先根据score表中的sno分组求每个sno的最高分数。这求得的当然是每个同学的最高分啦,但是只是获得了最高分,没有指定是谁的最高分,导致在前面的【SELECT SNAME ,CNO,GRADE FROM Score Y,Student WHERE (STUDENT.SNO=Y.SNO)】查询结果集中的后面检索条件【AND Y.GRANDE IN (所有人的最高分集合)】,这样系统就会查询分数在“所有人的最高分”里的结果集了。

而第二种方案,除了限定分数范围(最高分),还限定了学生的编号(SELECT MAX(GRADE) FROM SCORE WHERE

SNO=Y.SNO

GROUP BY SNO,sno = y.sno就是限定学生的编号。

),所以结果自然不同了。

根据你的要求,我给你提供一种查询方式。其实原理是一样的哦。select stu.sname, scr.cno,scr.grade from student stu

left join score scr on scr.sno = stu.sno

where exists (select 1 from (select s.sno,max(s.grade) as mg from score s group by s.sno) t where t.sno = stu.sno

and t.mg = scr.grade)

希望能帮助你。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值