gpt4 book ai didi

mysql - 获取行排名而不获取每一行

转载 作者:行者123 更新时间:2023-11-29 07:18:25 26 4
gpt4 key购买 nike

我正在使用此查询来获取某个用户的高分。

SELECT score FROM highscores WHERE user_id=?

我想知道这个特定的高分与其他分数相比是多少。所以基本上是我们 DESC 排序高分表后的行号。

我当然可以获取所有行并查看数组键,但我想知道是否有直接通过 MySQL 查询的性能更友好的方法。 highscore 表包含大约 500k 行,似乎有点矫枉过正(并且需要一些时间)必须首先获取它们以获得用户分数的排名。

最佳答案

前段时间帮一个 friend 做类似的事情,写了一篇文章, How to get a single player's rank based on the score .

因此,我们的想法是运行一个带有 WHERE 子句的 count(*) 查询,以包括所有得分较高的玩家:

SELECT count(*)+1 FROM players WHERE score > ?

或者,基于用户id,

SELECT count(*)+1 FROM players WHERE score > (SELECT score FROM players WHERE id = ?)

这个解决方案比我在 Stack Overflow 上找到的任何解决方案都简单得多。

还可以细化,考虑其他字段,以防两个用户有相同的分数,比如分数更新的时间:

SELECT count(*)+1 FROM players WHERE score > ? OR (score = ? AND score_updated < ?)

关于mysql - 获取行排名而不获取每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57906684/

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