QQ网名大全

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

你好,你展示的第一种sql查询方案,其意思是:
先根据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)
希望能帮助你。
佚名
2024-05-20 11:02:50
最佳回答
类似问题(10)