如何从我班级的最新测试中选择最佳分数

时间:2011-11-03 15:39:06

标签: php mysql

我无法将结果显示正确,我想要一份所有学生的列表,其得分最高。我的表设置为记录每次参加测试的尝试,因此每个学生都有多个分数。

这是我的代码:

SELECT o1.student_id, o1.max_score, o2.course_id max_score
FROM (
SELECT student_id, MAX( test_result ) max_score
FROM  test_scores
WHERE test_scores.course_id = $course_id
GROUP BY score DESC
)o1
JOIN  test_scores o2 ON ( o2.score = o1.max_score AND o2.student_id = o1.student_id ) 
GROUP BY o1.max_score DESC

我得到了这些结果:

course_id   max_score   student_id_of_max_score
1   100 23
1   90  17
1   80  16
1   60  11
1   40  18
1   39  17*
1   33  1
1   0   11*

我应该补充一点,问题是存在重复学生ID的行 - 标有星号。我只想要每门课程得分最高。

1 个答案:

答案 0 :(得分:1)

任何原因

SELECT course_id, student_id, MAX(score)
FROM test_scores
GROUP BY course_id, student_id

还不够吗?