gpt4 book ai didi

MySQL - 为具有不同条件的组中的每一行获取 count()

转载 作者:可可西里 更新时间:2023-11-01 08:36:12 25 4
gpt4 key购买 nike

我有一个高分表scores: (id int, deviceid int, value int, board int)。我想显示特定玩家的位置。目前我正在这样做(在 PHP 中):

我选择玩家有分数的所有棋盘和分数本身:

select board, min(value) as value
from scores
where deviceid = 1234
group by board

然后对于每一行($board,$value)我选择:

select count(id) from scores
where board = $board and value < $value

通过为分数小于指定值的特定棋盘选择行数,我得到玩家的位置(第一个玩家将获得位置 0,因此显示时它会增加 1)

我知道这是非常低效的,所以我正在寻找一种更快地完成它的方法。它可以在带有游标的存储过程中完成,但对于 100 个板,我最多需要进行 1+100 次选择。

简而言之,我想在伪sql中做这样的事情:

select board, min(value) as val,
count(id) from _this_group_ where value < val
from scores
where deviceid = 1234
group by board

最佳答案

SELECT scores.board, count(1) AS position
FROM scores
JOIN
(SELECT board, MIN(value) AS value
FROM scores
WHERE deviceid = 1234
GROUP BY board
) player_scores
ON scores.board = player_scores.board
WHERE scores.value < player_scores.value
GROUP BY scores.board

关于MySQL - 为具有不同条件的组中的每一行获取 count(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739017/

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