0
点赞
收藏
分享

微信扫一扫

mysql根据多列排序方法(同分值并列排名)

天涯学馆 2022-03-25 阅读 41
mysql

例如:

-- 19、按各科成绩进行排序,并显示排名(实现不完全)
数据为:

SQL为:

SELECT
dt.c_id,dt.s_score
,@r := CASE WHEN @u = dt.c_id and s_score>@s THEN 0/(@s:=s_score) + @r + 1
                        WHEN @u = dt.c_id and s_score=@s THEN @r
                        WHEN @u = dt.c_id and s_score<@s THEN 0/(@s:=s_score) + @r + 1
            WHEN @u := dt.c_id /* Notice := instead of = */ THEN 1
                      END AS user_game_rank
FROM ( SELECT c_id, s_score FROM score ORDER BY c_id, s_score DESC) AS dt,(select @r := 0, @u := '01',@s:=0) b
;

排序后结果为:

 

 

 

举报

相关推荐

0 条评论