假設有表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
替換爲<=你想要的的數字
即可