オプション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
または、最初のクエリからランクを取得したら、1つのクエリで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";