這是我正在使用的一個真正的noobish MySQL查詢問題。MySQL在Group By查詢中選擇錯誤的列值
我在寫一個遊戲中有高分表。高分數據庫記錄了名稱,等級和分數。數據庫中有很多重複項。例如:
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分!我怎樣才能解決這個問題?
感謝您的解釋埃裏克 - 它對我來說是完全意義上的,但代碼並沒有工作,我不能發現問題在哪裏。現在代碼一直返回Bob的LOWEST級別的分數,而不是他的最高分數! 之前它似乎是數據庫中的第一個得分,這是不好的。所以這是好得多 - 只是不完美:) – 2009-04-25 03:25:50
我認爲你需要在最後一行:GROUP BY h1.Name,h1.Level – bernie 2009-04-25 04:22:07
你說得對 - 沒有複製它時,我粘貼它在。謝謝! – Eric 2009-04-25 05:12:53