▽1
●
うぃんど ●100ポイント ベストアンサー |
求め方はいくつかあります。
(1)対象範囲の全ての結果が欲しい場合は例えば下記のような具合にします。
SET @a = 0; SELECT *, (@a := @a + 1) AS `順位` FROM `テーブル` ORDER BY SCORE DESC;
結果
NAME | SCORE | 順位 |
cccc | 120 | 1 |
dddd | 100 | 2 |
aaaa | 90 | 3 |
eeee | 80 | 4 |
ffff | 47 | 5 |
bbbb | 36 | 6 |
(2)部分的な結果だけが欲しい場合は例えば下記のような具合にします。
SELECT *, (SELECT COUNT(*) + 1 FROM `テーブル` b WHERE b.SCORE > a.SCORE) AS `順位` FROM `テーブル` a WHERE `NAME` = 'cccc';
結果
NAME | SCORE | 順位 |
cccc | 120 | 1 |
他にも求め方はいろいろありますが、変数を使うもの(1)と、
自己結合を使うもの(2)がベースとなりますので、
上記2つのどちらでも使えるようになっておいたほうが良いでしょう。