分数页面的逻辑是什么:
>
所有玩家中的当前用户顺序(如#115):MySql为所有用户选择按分数排序,然后检查当前用户在哪里?
更好的两个分数:获取当前用户,然后选择Limit2,其中score>“$CurrentUserScore”?
减两分:获取当前用户,然后选择LIMIT 2,其中得分<“$CurrentUserScore”?
我觉得这很难缠,还有别的办法吗?
备选案文1:
从score>=$user_score
的用户中选择计数(1)作为计数
这应该能给你这个人的级别。如果您担心多个人的得分与当前用户相同,请将>=
更改为>
,那么您可以在结果中添加1。
备选案文2和3:
从score>$user_score按分数排序asc限制2
的用户中选择*
从得分<$user_score顺序按分数desc限制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";