score毎にレコード付与を行いたい場合には以下SQLで対応可能
## ランキング付与(同率は未対応) SET @rownum=0; SELECT @rownum:=@rownum+1 AS ROW_NUM , score , userid FROM ranking_tbl ORDER BY score desc ;
同率順位があった場合は、mysql内のソート順に連番が増えていく為、正しい値にはならないが、処理が高速な為、
同率が少ない場合、同率が同じ順位にならなくても気にならない場合は推奨。
## ランキング付与(同率対応版)
SELECT
r1.userid
, r1.score
, (
SELECT
count(r2.score)
FROM
ranking_tbl AS r2
WHERE
r2.score > r1.score
) + 1 AS rank
FROM
ranking_tbl AS r1
ORDER BY
r1.score DESC
;
同率順位があった場合は、同率で表す事が出来るが、テーブルのレコード量が多いと、
処理が重くなってくるので、同率未対応の処理とは要件によって取捨選択する形になるパターンが多いと思われます。




