【mysql】排序方法

查询各科成绩前三名的记录,不考虑并列的情况;


select
a.course_id as 课程ID,
a.score as 成绩,
count(a.course_id) as 排名
from score a left join score b on a.course_id=b.course_id and a.score<=b.score
group by a.course_id,a.score
having count(a.course_id)<4
order by a.course_id,a.score desc;

 

其中排序方法就是通过同表比对, count(a.course_id) 实际上是统计同一表中有多少个低于(高于)该行分数的行,进而转化为该行的实际排名

posted @ 2018-07-13 19:43  caya  阅读(145)  评论(0编辑  收藏  举报