主页 > 知识库 > 数据库 > Oracle >

Oracle中按条件过滤重复记录

来源:中国IT实验室 作者:佚名 发表于:2013-07-08 14:33  点击:
Oracle中按条件过滤重复记录 在数据处理中,经常会遇到类似这样的情况: 数据库 中存在多条记录,其中某些字段值相同,其他字段值不同.实际的业务需要针对这样的情况,只保留一条数据,其他数据删除.如何做到呢?在sql中有top关键字相对容易做到,但是在oracle中不支
Oracle中按条件过滤重复记录
 
  在数据处理中,经常会遇到类似这样的情况:数据库中存在多条记录,其中某些字段值相同,其他字段值不同.实际的业务需要针对这样的情况,只保留一条数据,其他数据删除.如何做到呢?在sql中有top关键字相对容易做到,但是在oracle中不支持top关键字,如果实现同样的效果就会小费周折.具体实现方法如下举例:
 
假如现在有表Test,其中记录
 
 
现在业务要求针对id,time相同的记录只保留一条,即处理后得结果为
 
 
ORACLE语句
 
 或者
 
 
 
1
select * from (select * from test order by id, rowid desc) t1 where rowid  in (select rowid  from (select * from test order by id, rowid desc)  t2 where t1.id=t2.id and t1.time =t2.time and rownum=1 );

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%