当前位置:数据库 > Oracle >>

Oracle中按条件过滤重复记录

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

 

 
 或者
 
 
对应的oracle语句:
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 );

 

 
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,