【发布时间】:2022-01-07 20:27:53
【问题描述】:
我正在尝试创建一个 mysql 查询,该查询通过我的记分牌查找给定的 playerid,然后找到他们的最高分数,然后在该分数上添加一个排名。 我已经非常接近我想要通过这段代码实现的目标:
SELECT PlayerUUID, `iGamescore` as score, FIND_IN_SET( iGamescore, (
SELECT GROUP_CONCAT( iGamescore
ORDER BY iGamescore ASC )
FROM crystm_gameScoreboard )
) AS rank
FROM crystm_gameScoreboard
WHERE PlayerUUID = '4c8984f3-651a-48bc-ad1a-879624380fab'
LIMIT 1
但我确实知道这名球员已经打了很多次,因此多次出现在记分牌上。如此处所示:
所以这里的问题是,是的,它确实找到了玩家并正确给出了排名。但是,由于它存在多次,它会保存第一个分数而不是最高分数。我将如何修复我的查询以纠正此问题,或者您是否会在每次他们为自己创建高分时创建新分数,而只是更新他们在记分牌中的先前记录?
提前致谢
【问题讨论】:
-
如何通过子句添加订单
ORDER BY iGamescore DESC -
@ProGu 已经很遗憾地尝试过了。这打破了排名,将其排在第 11 位:(
-
你的结果应该是什么?
-
您的
GROUP_CONCAT由 ASC 而非 DESC 订购
标签: mysql sql phpmyadmin