SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
问题描述:
SQL查询求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
student表
Score表
求每个同学的课程成绩的最高分,查询结果项包括:学生姓名、课程号及最高分
方案一:SELECT Student.SNAME,SCORE.CNO,SCORE.GRADE FROM Student,SCORE
WHERE SCORE.GRADE IN ( SELECT MAX(GRADE)AS MAXXGRADE FROM SCORE GROUP BY SCORE.SNO)AND STUDENT.SNO=SCORE.SNO
方案二:SELECT SNAME ,CNO,GRADE FROM Score Y,Student
WHERE (STUDENT.SNO=Y.SNO)AND Y.GRADE IN (SELECT MAX(GRADE)
FROM SCORE WHERE SNO=Y.SNO GROUP BY SNO)
为什么我第一种写的不是我想要的第二种的答案.
答
你好,你展示的第一种sql查询方案,其意思是:先根据score表中的sno分组求每个sno的最高分数.这求得的当然是每个同学的最高分啦,但是只是获得了最高分,没有指定是谁的最高分,导致在前面的【SELECT SNAME ,CNO,GRADE FR...