1

我有一个 RuneScape 私人服务器,它将玩家分数存储在数据库中。高分加载玩家的分数并将它们放入表格中。

但现在出现了我无法解决的更难的部分:
我想显示玩家的排名。喜欢:'攻击等级:44,排名第 12'。所以它必须找到用户的排名。

我怎样才能让它工作?我现在用谷歌搜索了 2 天,我没有找到任何东西。

4

2 回答 2

2

我不知道是否有办法使用相同的查询来实现这一点。

您可以进行另一个查询,例如:

位置 = select count(*) from players where attack > 44+ 1

此查询将返回排名高于某人的玩家数量。“加一”部分是让排名从 1 开始(因为第一个不会有任何人排名高于他)。

例如,如果表是:

id attack
 0     35
 1     22
 2    121
 3     76

pos(3) = 1(只有玩家 2 排在上面)+ 1 = 2

于 2011-02-21T16:25:24.357 回答
0

您可以创建一个(可能)显示每个玩家得分的视图。沿着这些思路可能会奏效。

create view player_scores as 
select player_id, sum(score) 
from scores
group by player_id

这将为每个玩家提供一排,以及他们的总分。有了这个观点,排名就简单了。

select count(*) 
from player_scores
where sum > (select sum from player_scores where player_id = 1)

该查询将返回得分高于 player_id = 1 的玩家数量。

当然,如果您在运行查询之前知道玩家的分数,则可以将该分数作为参数传递。只要列被索引,这将运行得更快。

于 2011-02-21T16:40:07.943 回答