假设我有一个mysql表 signed_up
带列 student_id, course_id, and marks
. 我想拿回那辆车 student_id, course_id
最大值 mark
为每个学生。如果学生收到同样的 mark
在多个课程中,我想选最小的 course_id
. 最后,我想显示这些结果,按递增排序 student_id
.
以下是我给出错误输出的尝试:
select student_id, course_id, max(grade) from signed_up
where course_id =
(select min(course_id) from signed_up s where s.student_id = student_id)
group by student_id, course_id
order by student_id asc;
我得到一个结果集在哪里 course_id
就从1开始。这让我觉得我把子查询搞砸了 where
条款。
有什么建议吗?
2条答案
按热度按时间aydmsdu91#
希望以下查询能有所帮助:
v6ylcynt2#
我相信这正是你想要的:
这将获得每个学生的最高分数以及该分数的课程。如果存在重复项,则选择id较小的课程。
你也可以把它当作
group by
用一点技巧: