SQL 查詢表中每門課程成績最好的前n名學生 優於group by語句的方法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章