我的MySQL查询如何给出所有游戏的排名只是给出每个玩家顶级游戏的等级?

问题描述 投票:1回答:1
SELECT 
1+(SELECT count(*) from games a WHERE a.score > g.score) as rank,
score, p.leaderboard_initials, p.operating_system
FROM games g
inner join players p on (p.google_id = g.google_id)
ORDER BY score DESC
LIMIT 0, 100;

返回为玩家提供每场比赛的排行榜。

enter image description here

我需要返回一个排行榜,其中只列出每个玩家的最佳得分游戏。所以44rhh仍将位居榜首,其次是DMC,但随后BMO将排在第三位。

我知道解决方案应该很简单,但我想不出怎么做!

mysql ranking rank
1个回答
1
投票

您可以通过leaderboard_initials选择最高分数组

您可以通过leaderboard_initials选择最高分数组

set @rank=0;
select (@rank:=@rank+1) rank , leaderboard_initials, max(score)  max_score  
from  (
    SELECT 
    1+(SELECT count(*) 
    from games a WHERE a.score > g.score) as rank,
    score, p.leaderboard_initials, p.operating_system
    FROM games g
    inner join players p on (p.google_id = g.google_id)
    ORDER BY score DESC
    LIMIT 0, 100;
) t  
group by leaderboard_initials 
order by max_score DESC 
© www.soinside.com 2019 - 2024. All rights reserved.