MySQL从每个值中选择max()

问题描述 投票:0回答:4

我有一种方法来获取每个值的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

这有可能吗?如何?谢谢。

mysql sql database select greatest-n-per-group
4个回答
1
投票

您可以使用聚合获得每列的最大值:

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
投票

尝试一下:

select id,name,max(age) over(partition by name) as max_age from table group by id,name;

1
投票

您可以使用聚合:

select min(id) id, name, max(age) age from mytable group by name

1
投票

您可以从子查询中获取max agename,然后左联接以获取其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
© www.soinside.com 2019 - 2024. All rights reserved.