分数页面上的逻辑是什么:
所有玩家中的当前用户顺序(如#115):MySql SELECT for all users ORDER BY score DESC 然后检查当前用户在哪里?
更好的两个分数:获取当前用户,然后 SELECT LIMIT 2 WHERE score > "$currentuserscore"?
减去两个分数:获取当前用户,然后 SELECT LIMIT 2 WHERE score < "$currentuserscore"?
我觉得这很麻烦,还有其他方法吗?
对于选项 1:
select count(1) as count from users where score>=$user_score
这应该给你这个人的等级。如果您担心多个人与当前用户的分数相同,请将其更改>=
为 a,>
那么您可以在结果中加 1。
对于选项 2 和 3:
select * from users where score>$user_score order by score asc limit 2
select * from users where score<$user_score order by score desc limit 2
或者,一旦您获得了第一个查询的排名,您就可以在一个查询中获得所有 5 个(2 个之前、2 个之后和当前用户):
$start = $user_rank - 2;
$query = "select * from users order by score asc limit {$start},5";
或者,如果您不希望包含当前用户或与当前用户具有相同分数的任何人,您可以这样做:
$start = $user_rank - 2;
$query = "select * from users where score!=$user_score order by score asc limit {$start},4";