2012-01-09 56 views
2

我有一個包含userID,score的MySQL表。
單個用戶可以有很多分數,但當然可以有很多用戶。SQL - 爲每個用戶獲取最高價值(DISTINCT?)

我想檢索數據庫中userID的每個的最高分

我試過以下,但我覺得我是在錯誤的道路:

SELECT DISTINCT(`userID`), `score` FROM `myTable` ORDER BY `score` DESC 

任何援助將不勝感激。

謝謝
Shai。

回答

6

你想聚合函數maxgroup by條款:

select 
    userid, 
    max(score) as maxscore 
from 
    mytable 
group by userid 
order by maxscore desc 

group by說, 「嘿,MySQL的,給我最大score,但userid分區呢。」這樣,您可以獲得每個userid的最高分數。

此外,您可以使用別名列order by,以便通過最高分,降序(排行榜或您有什麼)獲得用戶列表。

+0

只是缺少最大(分數),謝謝! – 2012-01-09 17:32:31

+0

@ShaiMishali - 以及'group by' :) – Eric 2012-01-09 17:33:40

+0

@ShaiMishali - 另請參見:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html – Eric 2012-01-09 17:34:02