これは、私が抱えている本当に初心者のMySQLクエリの問題です。
私が書いているゲームのハイスコア テーブルがあります。ハイスコアDBには、名前、レベル、達成したスコアが記録されます。データベースには多くのほぼ重複があります。例えば:
Name | Level | Score | Timestamp (key)
Bob 2 41 | 1234567.890
Bob 3 15 | 1234568.890
Bob 3 20 | 1234569.890
Joe 2 40 | 1234561.890
Bob 3 21 | 1234562.890
Bob 3 21 | 1234563.890
次のような出力で、「達成された最高レベル」のハイスコアリストを返したいと思います。
Name | Level | Score
Bob 3 21
Joe 2 40
私が現在使用しているSQLクエリは次のとおりです。
SELECT *, MAX(level) as level
FROM highscores
GROUP BY name
ORDER BY level DESC, score DESC
LIMIT 5
しかし、これはうまくいきません。「スコア」フィールドの出力は、達成された最高レベルに対応するスコアを取得するのではなく、常にグループからランダムに引き出されるようです。例えば:
Name | Level | Score
Bob 3 41
Joe 2 40
ボブはレベル 3 で 41 ポイントを獲得できませんでした! どうすればこれを修正できますか?