SQL - получить максимальное значение для каждого пользователя (DISTINCT?) - PullRequest
2 голосов
/ 09 января 2012

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

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

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

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

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

Спасибо
Шай.

1 Ответ

6 голосов
/ 09 января 2012

Вам нужна агрегатная функция 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 столбец с псевдонимами, чтобы получить список пользователей по максимальному баллу по убыванию (для списка лидеров или что у вас есть).).

...