MySQLで順位取得を行う

とある投票システムで、登録者毎の順位取得を行う必要があったので作業をしました。

アルゴリズムというか、考え方では有るのですがメモ書きとして残しておきます。

とはいえ方法は案外簡単で、自己結合を行い「自分より上位の行数+1」をすることで順位は取得できます。

SELECT (SELECT COUNT(*)
        FROM ex_table AS b
        WHERE a.vote < b.vote) + 1 AS rank
FROM ex_table AS a
WHERE id = xxx
ORDER BY a.vote DESC

例としてはこんな感じ。
ex_tableには、id列とvote列があるものとします。
この例ではid = xxxのものを取得しています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です