您的位置:首页 > 数据库 > Oracle

Oracle 中按条件过滤重复记录

2013-07-03 11:32 169 查看
在数据处理中,经常会遇到类似这样的情况:数据库中存在多条记录,其中某些字段值相同,其他字段值不同.实际的业务需要针对这样的情况,只保留一条数据,其他数据删除.如何做到呢?在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 );
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: