假设有表score记录学生id(student_id)、课程id(course_id)和课程分数(score)
要求查询表中每门课程成绩最好的前2名学生的id、相应课程id和分数。则可以用如下sql语句
select * from score score1 where(
select count(1)
from score score2
where score1.course_id = score2.course_id and score2.score >= score1.score
)<=2
order by score1.course_id asc, score1.score desc;
如果要查询前n位,则将上述语句中的<=2
替换为<=你想要的的数字
即可