Apr 16, 2012

MySQL+PHP で レコードの順位をつける

成績から順位を求めるときに使えますよ。

得点項目(項目名を仮にscoreとします)によるレコードの順位は
ユーザ変数(@をつける 名を仮にscore_orderとします)をカウントアップすることで求める。

mysql_query() 関数は、ひとつの SQL クエリー(;をつかえない)しか書けないので
ユーザ変数を使うにも、工夫がいる。

こんな感じである。
(:= は、代入演算子)

SELECT
score,
IF(@score_order IS NULL, @score_order := 1, @score_order := @score_order + 1) AS score_order
FROM score_table
ORDER BY score DESC