从数据库获得玩家等级

时间:2011-02-21 16:20:46

标签: sql mysql rank

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

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

我怎样才能让它发挥作用?我现在用Google搜索了2天,我什么都没找到。

2 个答案:

答案 0 :(得分:2)

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

您可以进行另一个查询:

pos = 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

答案 1 :(得分: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的玩家数量。

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