phpmyadmin MySQL按键获取最高值,然后添加排名

ne5o7dgx  于 2022-11-09  发布在  PHP
关注(0)|答案(2)|浏览(88)

我正在尝试创建一个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

返回值:

但是我知道这个玩家已经玩过很多次了,因此也多次出现在记分牌上。

所以这里的问题是,是的,它确实找到了球员,并给出了正确的排名。但是,由于它存在多次,它保存了第一个得分,而不是最高分。我该如何修复我的查询,以纠正这一点,或者你不是创建一个新的分数,每次他们创造了一个高分,只是更新他们以前的记录在记分牌?
先谢谢你

xurqigkl

xurqigkl1#

要获得最高分,您需要GROUP BY

SELECT 
   PlayerUUID, 
   MAX(`iGamescore`) as score
   RANK() OVER (ORDER BY MAX(`iGamescore`) DESC) as Rang
FROM crystm_gameScoreboard
GROUP BY PlayerUUID 
ORDER BY 3 ASC

order by 3 ASC使列表按等级排序

watbbzwu

watbbzwu2#

这篇帖子解决了这个问题:MySQL - Rank user amongst list of top high-scores
有我想要的一切。我不知道为什么我找不到这个帖子,但当搜索,关键字是重要的哈哈。
感谢您的意见tho。

相关问题