我有一个存储高分以及玩家 ID 的表。我希望能够通过玩家 ID 提取记录,然后获取他们的分数在表中的排名或位置。意思是,基本上我希望能够说“你处于第 N”位置,纯粹基于玩家得分与所有其他得分的比较。例如:如果我位于第 46 位,那么对我来说,位置消息将类似于您在总分中排名第 46 位。谁能告诉我一个小例子吗?
有两种方法可以做到这一点:
方法一:
SET @i = 0;
SELECT * FROM
scores s1 INNER JOIN (SELECT *, @i := @i + 1 AS rank FROM scores ORDER BY score DESC) AS s2 USING (id);
方法二:
SELECT *, (SELECT COUNT(1) AS num FROM scores WHERE scores.score > s1.score) + 1 AS rank FROM scores AS s1
ORDER BY rank asc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)