[MySQL] ソート後のレコード順位を取得する

特定のレコードが、テーブルをある条件でソートした後に先頭から何番目にあるか、を知るにはどうするか?

そのレコードより前に位置するレコードを数えればよい

たとえば、生徒名簿にテスト得点が記録されているとして、鈴木太郎のテスト順位(得点の高い順)は何番か?

たとえば、商品一覧に発売日が記録されているとして、商品Aは何番目(発売日の古い順)に発売したか?

面倒なのは上に示したように、レコードから順位を逆引きしたい場合だけ。順位からレコードを取得するテーブルの順引きは簡単。普通にテーブルをソートしてLIMITで順位をオフセットとして与えてやれば済む。

やりたいことはできたけど、処理時間に関しては考察が必要かもしれない。

参考サイト

MySQLでソート後の順位を取得する方法を教えて下さい。 例えば、.. – 人力検索はてな
http://q.hatena.ne.jp/1336143424