2012-11-11 67 views
0

我正在使用MySQL,並且我有一張保存玩家分數的表格,其中一名玩家可以記錄多個分數。我試圖找到使用MySQL ORDER BY關鍵字對玩家進行排名的最佳方法。MySQL是否維護您正在查詢的表的順序

現在我在做什麼是:

SELECT DISTINCT t.userName FROM (SELECT userName, score FROM scoreTable ORDER BY score DESC) t; 

要爲排名它我假設從子查詢的順序是由主查詢維持使用。

這個假設是否正確?到目前爲止,我所有的測試都正確地維護了訂單有沒有可能無法使用的情況?

+0

我認爲不會有問題。還有一件事,如果你使用查詢「SELECT DISTINCT(userName)FROM scoreTable ORDER BY score DESC」,那麼將沒有問題。爲什麼你在上面使用子查詢 –

+0

如果我使用你的建議查詢,它似乎採取每個userName並使用該分數來執行排序的排名。 – Russbear

回答

1

我不認爲這是保證行爲,但通常是的。如果您希望以這種方式排列最終結果,最好在外部查詢中使用ORDER BY

2

以下是否適合您?

SELECT userName, MAX(score) AS max_score 
FROM scoreTable GROUP BY username 
ORDER BY max_score DESC