MySQL Select 来自每个值的 max()
MySQL Select max() from every Value
我有办法获取每个值的 max()
值吗?
我有一个像这样的 table:
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
这可能吗?如何实现?
谢谢。
试试这个:
select id,name,max(age) over(partition by name) as max_age from table group by id,name;
您可以使用聚合获取每列的最大值:
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);
您可以使用聚合:
select min(id) id, name, max(age) age from mytable group by name
您可以从子查询中获取 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
我有办法获取每个值的 max()
值吗?
我有一个像这样的 table:
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
这可能吗?如何实现? 谢谢。
试试这个:
select id,name,max(age) over(partition by name) as max_age from table group by id,name;
您可以使用聚合获取每列的最大值:
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);
您可以使用聚合:
select min(id) id, name, max(age) age from mytable group by name
您可以从子查询中获取 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