获取用户在排行榜中的位置
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
查询停止工作(获取用户在排行榜中的位置):
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