ユーザーのランキングを取得するには:
(SELECT * FROM (
SELECT
RANK() OVER (ORDER BY Score desc ,Karma desc) AS ranking,
Id,
Username,
Score, karma
FROM Players
) AS players_ranked_by_score
where Id = id_of_user
id_of_user は、現在のプレーヤーの ID を含むパラメーターです。隣接するプレイヤーと現在のユーザーを取得するには:
(SELECT * FROM (
SELECT
RANK() OVER (ORDER BY Score desc ,Karma desc) AS ranking,
Id,
Username,
Score, karma
FROM Players
) AS all_players_ranked
where ranking >= player_ranking - 2 and ranking <= player_ranking + 2;
player_ranking は、上記のクエリから取得したランキングです。
それが役に立てば幸い!
更新: MySQL には rank() 関数がありません (MS SQL、Oracle、Postgres にはあります)。周りを見回したところ、MySQL でランキングを行う方法を説明する次のリンクを取得しました: http://www.artfulsoftware.com/infotree/queries.php?&bw=1024#460。