gpt4 book ai didi

php - Highscores(最高分)排名计算和更新查询?

转载 作者:行者123 更新时间:2023-11-29 08:16:42 25 4
gpt4 key购买 nike

我有一个高分(最高分)系统,它根据玩家的经验来计算位置。但现在我需要在网络上的其他地方使用玩家的排名,也许网络上的更多地方也像个人一样得分高,就会显示玩家该技能的排名。

因此,仅仅循环并使用像rank++这样的循环周期是行不通的,因为我需要保存该排名其他地方。

我可以做的是循环所有玩家,然后发送查询来更新该玩家的排名,但如果我有1000玩家怎么办?或者更多?这意味着每次加载1000个查询。

我想是否可以有一个 SQL 查询,我可以用它在一两个查询中执行相同的操作。

我该怎么做?我按照玩家的经验排序来计算排名,所以我的表格结构如下所示:

表格:

  • 玩家

    id(自动增量)整数(255)

    显示名称 varchar(255) 唯一

    排名整数(255)默认为空

    体验bigint(255)

最佳答案

这应该为您提供 id = 1 的用户的排名。如果您想要每个玩家,只需删除 WHERE 子句即可:

SELECT a.id, a.displayname, a.rank, a.experience
FROM (
SELECT id, displayname, @r:=@r+1 AS rank, experience
FROM players, (SELECT @rank:=0) tmp
ORDER BY experience DESC) a
WHERE a.id = 1

我不会直接在玩家表中获得排名,因为这意味着每次用户更改体验时您都必须重新计算它。您可以随时执行此查询来获取玩家或排行榜的排名。

如果您仍然想更新它,您可以使用此查询执行 INNER JOIN,以使用此查询的排名更新原始表。

关于php - Highscores(最高分)排名计算和更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20474295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com