我有一个表A ,它的字段有id,name,class,sex,date然后,name是有可能重复的我想做一个查询,查询的结果中,不能有重复的name(重复的name中,保留date最大的那条记录)怎么写哦,在线等

解决方案 »

  1.   

    select a.* from tb a join (select name,max(date) date group by name) b on a.name=b.name and a.date=b.date
      

  2.   

    select a.* from tb a join (select name,max(date) date from tb group by name) b on a.name=b.name and a.date=b.date
      

  3.   


    select id,name,class,sex,date 
    from a t
    where not exists(select 1 from a t1
                     where t.name=t1.name and t.date<t1.date)
      

  4.   


    select * 
      from table
     where (name, date) in 
            (select name, max(date)
               from table
              group by name
            )
      

  5.   

    我自己也写了一个查询,貌似查询结果和三楼的一样      SELECT id,name,class,sex,date  FROM
                (select id,name,class,sex,date ,row_number()over(partition by name order by date  desc) mm 
                from a) 
          WHERE mm=1
    就是不知道,两个查询结果的效率,哪个高啊