前提・実現したいこと
Mysqlだけでランキングを求めたく、プログラムを参照したのですがよく分かりません。
下記のようにランキングにはなるのですが、user_idも結果に添えるにはどうすればよろしいのでしょうか?
発生している結果
+------+-------+ | rank | score | +------+-------+ | 1 | 52 | | 1 | 52 | | 3 | 51 | | 3 | 51 | | 3 | 51 | | 3 | 51 | | 7 | 50 |
該当のソースコード
参照サイト「mysqlだけでランキングしてみる(同率考慮)」
CREATE TABLE `some_score` ( `user_id` int(11) NOT NULL, `score` int(11) NOT NULL DEFAULT '0', KEY `user_id` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SELECT rank, some_score.score FROM ( SELECT score, @rank AS rank, cnt, @rank := @rank + cnt FROM (SELECT @rank := 1) AS Dummy, (SELECT score, count(*) AS cnt FROM some_score GROUP BY score ORDER BY score DESC) AS GroupBy ) AS Ranking JOIN some_score ON some_score.score = Ranking.score ORDER BY rank ASC;
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.26 |
+-----------+
ご教授よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。