0

分数页面上的逻辑是什么:

  • 所有玩家中的当前用户顺序(如#115):MySql SELECT for all users ORDER BY score DESC 然后检查当前用户在哪里?

  • 更好的两个分数:获取当前用户,然后 SELECT LIMIT 2 WHERE score > "$currentuserscore"?

  • 减去两个分数:获取当前用户,然后 SELECT LIMIT 2 WHERE score < "$currentuserscore"?

我觉得这很麻烦,还有其他方法吗?

4

1 回答 1

1

对于选项 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";
于 2013-01-11T18:20:35.780 回答