2012-01-09 2 views
2

У меня есть таблица MySQL, содержащая userID, score.
Один пользователь может иметь множество баллов, но может быть много пользователей, конечно.SQL - получить максимальное значение для каждого пользователя (DISTINCT?)

Я хочу получить наивысший балл для каждого из userID в базе данных.

Я попытался следующие, но я чувствую, что я нахожусь в неправильном направлении:

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

Любая помощь будет принята с благодарностью.

Thanks
Shai.

ответ

6

Вы хотите агрегатную функцию max с пунктом group 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

Только что не хватает (оценка), спасибо! –

+0

@ShaiMishali - И «группа by» :) – Eric

+0

@ShaiMishali - Также см. Здесь: http://dev.mysql.com/doc/refman/5.0/ru/group-by-functions.html – Eric