我有一个RuneScape私人服务器,它将玩家得分存储在数据库中。 高分加载玩家的分数并将其放入表格中。
但是现在出现了我无法解决的难题:
我想显示玩家的等级。喜欢:'攻击等级:44,排名12'。所以它必须找到用户的排名。
我怎样才能让它发挥作用?我现在用Google搜索了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的玩家数量。
当然,如果您在运行查询之前知道了玩家的分数,则可以将该分数作为参数传递。只要列被索引,那将会运行得更快。