获得分数页面的逻辑是什么:
所有玩家之间的当前用户顺序(如#115):所有用户的MySql SELECT ORDER BY得分DESC然后检查当前用户在哪里?
更好的两个分数:获取当前用户然后SELECT LIMIT 2 WHERE得分> “$ currentuserscore”?
少了两个分数:获取当前用户然后SELECT LIMIT 2 WHERE得分< “$ currentuserscore”?
我觉得这是非常错误的,还有其他方法吗?
答案 0 :(得分:1)
对于选项1:
select count(1) as count from users where score>=$user_score
这应该给你这个人的等级。如果您担心与当前用户具有相同分数的多个人将>=
更改为>
,那么您可以在结果中添加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";