Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从数据库中获取玩家等级_Sql_Mysql_Rank - Fatal编程技术网

Sql 从数据库中获取玩家等级

Sql 从数据库中获取玩家等级,sql,mysql,rank,Sql,Mysql,Rank,我有一个RuneScape专用服务器,它将玩家的分数存储在数据库中。 高分加载玩家的分数并将其放入表格中 但现在我无法解决的更难的部分来了: 我想显示玩家的等级。比如:“攻击等级:44,排名12”。因此,它必须找到用户的排名 我怎样才能让它工作?我在谷歌上搜索了两天,什么也没找到。我不知道是否有办法用同样的查询来实现这一点 您可以进行另一个查询,如: pos=从攻击>44的玩家中选择计数(*) 此查询将返回排名高于某人的玩家数量。“加一”部分是让排名从1开始(因为第一个排名不会有任何人超过他)

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

但现在我无法解决的更难的部分来了:
我想显示玩家的等级。比如:“攻击等级:44,排名12”。因此,它必须找到用户的排名


我怎样才能让它工作?我在谷歌上搜索了两天,什么也没找到。

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

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

pos=
从攻击>44的玩家中选择计数(*)

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

例如,如果表格为:

id attack
 0     35
 1     22
 2    121
 3     76
pos(3)=1(只有玩家2排名在上面)+1=2

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

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的玩家数量


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

用户级别是否存储在MySQL数据库的另一个表中?也许您可以使用PHPMyAdmin或SQLYog社区来梳理您可以访问的数据。