実現したいこと
①同じ順位の場合に、timeが少ない人を上位にランキングし、1位からランキング順に並べてechoする
②uidで指定した人の順位をechoする
該当のソースコード
php
1$sql = "SELECT uid, score, time, FIND_IN_SET(score,(SELECT GROUP_CONCAT(score ORDER BY score DESC)FROM players)) AS rank FROM players where score IS NOT NULL"; 2 3$stmt = $PDO->query($sql); 4foreach ($stmt as $row) { 5echo $row['uid'].':'.$row['score'].'点'.':'.$row['time'].'秒'.':'.$row['rank'].'位'; 6echo '<br>'; 7}
試したこと
テーブル名:players
カラム名:uid score time
実行結果:
ozawa:1点:-241秒:3位
suzuki:1点:-334秒:3位
tokoro:5点:-875秒:1位
tamori:1点:-251秒:3位
sanma:2点:-323秒:2位
同じ順位の場合には秒数が少ない人を上位にランキングしたいのですが、
ORDER BY score DESC, time DESC → ORDER BY score DESC, time DESC としてもダメでした。
分かる方、教えてください。
補足情報(FW/ツールのバージョンなど)
MySQL 5.6
php 7x
回答2件
あなたの回答
tips
プレビュー