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 );
假如现在有表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 );
相关文章推荐
- Oracle 中按条件过滤重复记录
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录) 转
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle_SQL 实验查询及删除重复记录 依据条件 (row)
- 解决sql 过滤重复数据记录的方法(Oracle)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- 使用Oracle的row_number() over函数过滤重复数据,取最新的记录
- Oracle:行转列函数,查询重复记录函数,过滤表中重复记录函数
- ORACLE 删除重复行,保留一条记录SQL
- mysql,oracle里删除重复记录,只保留一条(除了自增长字段,其他的字段完全相同为相同记录)
- ORACLE删除重复记录(大量重复数据)
- Oracle几种查找和删除重复记录的方法总结
- 如何解决Oracle“不能创建唯一索引,发现重复记录”问题
- sql过滤掉重复记录,只保留一条数据
- Oracle 查询并删除重复记录的SQL语句
- oracle 某个字段重复的记录,选其中随便一条。
- Oracle 查询并删除重复记录的SQL语句