我正在尝试创建一个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
返回值:
但是我知道这个玩家已经玩过很多次了,因此也多次出现在记分牌上。
所以这里的问题是,是的,它确实找到了球员,并给出了正确的排名。但是,由于它存在多次,它保存了第一个得分,而不是最高分。我该如何修复我的查询,以纠正这一点,或者你不是创建一个新的分数,每次他们创造了一个高分,只是更新他们以前的记录在记分牌?
先谢谢你
2条答案
按热度按时间xurqigkl1#
要获得最高分,您需要
GROUP BY
:order by 3 ASC
使列表按等级排序watbbzwu2#
这篇帖子解决了这个问题:MySQL - Rank user amongst list of top high-scores
有我想要的一切。我不知道为什么我找不到这个帖子,但当搜索,关键字是重要的哈哈。
感谢您的意见tho。