首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

select出反复的数据,有没办法只保留最近的一条记录

2013-09-11 
select出重复的数据,有没办法只保留最近的一条记录select name,result , changedate from t取出来的name可

select出重复的数据,有没办法只保留最近的一条记录
select name,  result , changedate from t
取出来的name可能有相同的,这种情况下有没办法根据changedate这条数据的插入时间,只取出最近的一条记录呢?
[解决办法]
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)
[解决办法]

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

[解决办法]

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

[解决办法]
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 倒序排序 就去最近的一条 
[解决办法]
over(partition by name order by changedate desc)
[解决办法]
使用over(partion by....) 此语法满足你的要求

热点排行