[英]Return a row number from an ordered list with MySQL
我正在努力在我的游戏中实现“高分”部分。 对于高分,我只显示前十名。 那没问题。 问题是我还想向用户展示他的排名。 假设用户排名 300,有没有办法让 MySQL 订购列表,找到用户名,并以某种方式返回他在列表中的位置,或者我只需将整个数据库复制到一个数组或其他东西中并计算行直到我击中用户?
好吧,如果您只显示前 10 名,我认为最简单快捷的方法是在 PHP 中分配排名。 因此,您按得分的降序获取前 10 名得分者的列表,将列表读入 PHP 数组,排名将是(数组索引 + 1)。
但是,如果您希望为所有用户分配等级,有一种方法可以做到这一点; 我在我的一个实现中使用了它。 我不确定是否也有直接的方法。 这里:
user_rank
并包含以下列:
id
PK AUTO_INCREMENTuser_id
rank
SMALLINT UNSIGNEDuser_rank
user_rank
。 id
为您提供每个用户的排名您可以在同一个查询中执行步骤 2-3,例如:
INSERT INTO `user_rank` (`user_id`, `rank`)
SELECT `id`, `score`
FROM `high_scores`
ORDER BY `score` DESC;
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.