MySQL Выберите max () из каждого значения - PullRequest
0 голосов
/ 23 марта 2020

Есть ли способ получить max() значение каждого значения? У меня есть такая таблица:

id primary key
name foreign key
age

, и мне нужен высший возраст каждого Имени. Например:

ID  NAME   AGE
1,  Marco, 12
2,  Jason, 23
3,  Tom,   5
4,  Marco, 16
5,  Jason, 22

Вывод должен быть:

ID  NAME   AGE
2,  Jason, 23
3,  Tom,   5
4,  Marco, 16

Возможно ли это и как? Спасибо.

Ответы [ 4 ]

1 голос
/ 23 марта 2020

Вы можете получить max age и name из подзапроса, а затем оставить соединение, чтобы получить его ID.

SELECT b.id, a.name, a.maxage
FROM (SELECT name, MAX(age) AS maxage
FROM table
GROUP BY NAME
) a
LEFT JOIN table b ON a.NAME = b.NAME AND a.maxage= b.AGE
1 голос
/ 23 марта 2020

Вы можете получить максимальное значение для каждого столбца, используя агрегацию:

select max(id), name, max(age)
from t
group by name;

Но если вы хотите получить полную строку с максимальным возрастом, то это будет:

select t.*
from t
where t.age = (select max(t2.age) from t t2 where t2.name = t.name);
1 голос
/ 23 марта 2020

Вы можете использовать агрегацию:

select min(id) id, name, max(age) age from mytable group by name
1 голос
/ 23 марта 2020

Попробуйте это:

select id,name,max(age) over(partition by name) as max_age from table group by id,name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...