【发布时间】:2015-11-14 22:51:25
【问题描述】:
我知道一点 SQL,我一直想知道如何从我的 Users 表中选择用户,我发现了这个:
SELECT *, FIND_IN_SET( Score, (
SELECT GROUP_CONCAT( Score ORDER BY Score DESC )
FROM Users
)
) AS Rank
FROM Users
WHERE UserID = 100
ORDER BY Score DESC
问题是,如果同一用户有多行,那么他们将分别获得排名。我想知道如何获得最高的Score 并让Rank 返回该值
它的样子(没有WHERE UserID = 100 子句):
ID-----UserID-----Score----Rank
1------100--------6--------1
2------192--------4--------2
3------192--------3--------3
我想要什么(没有WHERE UserID = 100 子句):
ID-----UserID-----Score----Rank
1------100--------6--------1
2------192--------4--------2
3------192--------3--------2
感谢您的帮助!
【问题讨论】:
-
你到底想做什么?
-
@Blag 我想知道如何获得他们的最佳(最高)分数并让该排名成为被选中的排名(我可能应该更清楚)
-
也许可以尝试使用
GROUP BY(UserID)和MAX(Score)来获得maxScore -
创建小提琴显示预期结果
-
好的,检查我的回答我认为它有效...