select max(OLD),NAME,SEX from table group by NAME,SEX
给你提供两种方法: 不过有个问题,你列出的是同名又同性,不知道是同名选最大的呢还是同名又同性的选年龄最大的呢? 第一种: select b.no,a.name,b.sex,maxold from (select name,max(old) maxold from tablename group by name) a,tablename b where a.name=b.name and a.max=b.old; 第二种: select * from tablename where (name,old) in (select name,max(old) from tablename group by name) 上面的方法是按name分组,也就是说同名中选年龄最大的。如果你再有性别上的限制的话,自己加条件好了。
select * from (select a.*,row_number() over(partition by NAME order by old desc) rm from tabname a) where rm=1;
的,即比如有如下一个很大的表:
NO NAME SEX OLD
1 王小强 男 24
2 王小强 男 30
3 刘明 男 35
4 李英 女 28
5 李英 女 45
......
......
我需要返回
2 王小强 男 30
3 刘明 男 35
5 李英 女 45
也就是同一个用户名下,年龄最大的所有人,而不是最大的那一个人
请各位高手指教,谢谢!
from table
group by NAME,SEX
不过有个问题,你列出的是同名又同性,不知道是同名选最大的呢还是同名又同性的选年龄最大的呢?
第一种:
select b.no,a.name,b.sex,maxold from (select name,max(old) maxold from tablename group by name) a,tablename b where a.name=b.name and a.max=b.old;
第二种:
select * from tablename where (name,old) in (select name,max(old) from tablename group by name)
上面的方法是按name分组,也就是说同名中选年龄最大的。如果你再有性别上的限制的话,自己加条件好了。
(select a.*,row_number() over(partition by NAME order by old desc) rm from tabname a)
where rm=1;