Выберите MAX (значение), значение2, значение3, не возвращая значение другого - PullRequest
0 голосов
/ 12 июня 2018

Это мой запрос:

SELECT DISTINCT MAX(nb_played), id_person,id_list FROM `t_stats` ORDER BY MAX(nb_played) DESC;

Я хочу вернуть максимальное значение nb, сыгранное для каждого списка идентификаторов , а затем вернуть идентификатор человека.

так в основном, лучший nb_played из каждого списка идентификаторов, с id_person.

Не могу понять это.кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Вы также можете использовать коррелированный подзапрос:

select s.*
from t_stats s
where s.nb_played = (select max(s2.nb_played)
                     from t_status s2
                     where s2.id_list = s.id_list
                    );

Это может использовать индекс на t_status(id_list, nb_played), поэтому производительность может быть лучше, чем при использовании group by.

0 голосов
/ 12 июня 2018

Используйте GROUP BY запрос:

SELECT t1.*
FROM t_stats t1
INNER JOIN
(
    SELECT id_list, MAX(nb_played) AS max_nb_played
    FROM t_stats
    GROUP BY id_list
) t2
    ON t1.id_list = t2.id_list AND t1.nb_played = t2.max_nb_played;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...