select * from tbname where old=(select max(old) from tbname);

解决方案 »

  1.   

    select * from table_name where max(old)
      

  2.   

    谢谢楼上的两位,但是你们的语句执行后,只有一条记录,即最大的那条,我是需要这样筛选
    的,即比如有如下一个很大的表:
    NO NAME   SEX  OLD
    1 王小强  男   24
    2 王小强  男   30
    3 刘明    男   35
    4 李英    女   28
    5 李英    女   45
    ......
    ......
      我需要返回
    2 王小强  男   30
    3 刘明    男   35
    5 李英    女   45
    也就是同一个用户名下,年龄最大的所有人,而不是最大的那一个人
    请各位高手指教,谢谢!
      

  3.   

    select max(OLD),NAME,SEX
    from table
    group by NAME,SEX
      

  4.   

    给你提供两种方法:
    不过有个问题,你列出的是同名又同性,不知道是同名选最大的呢还是同名又同性的选年龄最大的呢?
    第一种:
    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分组,也就是说同名中选年龄最大的。如果你再有性别上的限制的话,自己加条件好了。
      

  5.   

    select * from 
    (select a.*,row_number() over(partition by NAME order by old desc) rm from tabname a)
    where rm=1;