获取用户在排行榜中的位置

Getting the user's position in the leaderboard

查询停止工作(获取用户在排行榜中的位置):

SELECT 
        `rank`, `uid`, `battleWinScore` 
        FROM
            (SELECT 
             @rank:=@rank+1 AS `rank`, `uid`, `battleWinScore` 
             FROM
             `rating`, (SELECT @rank := 0) r 
             ORDER BY `battleWinScore` DESC 
            ) t 
        WHERE uid = 572;
        

在评分table中,我们需要通过字段battleWinScore获取用户的排名。 我绝对不擅长mysql。帮助=)

如果您是 运行 MySQL 8.0,只需使用 row_number()(或 rank(),如果您想要始终允许平局)。

select *
from (
    select uid, battleWinScore, rank() over(order by battleWinScore desc) rn
    from rating
) r
where uid = 572

在早期版本中,我建议使用相关子查询而不是用户变量:

select uid, battleWinScore
    (select count(*) + 1 from rating r1 where r1.battleWinScore > r.battleWinScore) as rn
from rating r
where uid = 572