select name,  result , changedate from t
取出来的name可能有相同的,这种情况下有没办法根据changedate这条数据的插入时间,只取出最近的一条记录呢?

解决方案 »

  1.   

    select name,result,changedate from t a where not exists (
      select name,result,changedate from t b where a.name=b.name and a.changedate<b.changedate)
      

  2.   

    select name,result,changedate 
    from t 
    where (name,changedate) in (select name,max(changedate) from t group by name);
      

  3.   


    select *
      from (select name,
                   result,
                   changedate row_number() over(partition by name order by changedate desc) as_level
              from t) temp
     where temp.as_level = 1
      

  4.   

    select *
      from (select name,
                   result,
                   changedate row_number() over(partition by name order by changedate desc) as_level
              from t) temp
     where temp.as_level = 1
    这个oracle的分析函数 根据changedate 倒序排序 就去最近的一条 
      

  5.   

    over(partition by name order by changedate desc)
      

  6.   

    使用over(partion by....) 此语法满足你的要求
      

  7.   

    select distinct name,  result , changedate from t s where s. changedate>to_date('2013-8-27','yyyy-mm-dd')
    只需修改日期就可看到在此日期之后的记录