oracle数据库删除重复数据

作者:活力源 | 创建时间: 2023-04-25
近期搜索oracle数据库删除重复数据的方法,发现没有找到满意的答案,然后自己写了一个。方案分三步即可简单解决大数据的重复问题。...
oracle数据库删除重复数据

操作方法

先将要删除的重复数据找出唯一的一份保存。例如我的语句是这样的: create table bak as Select a.* From  ac43 a, (select min(rowid) rowid1 from ac43 where aae140='150' group by baz001) b Where a.rowid = b.rowid1 这样我就保存了唯一一份我要的数据。

第二步就开始把范围内的数据全部删除,删除时最好要删除的条件有索引,数据量大的时候会很快。删除语句如下: delete from ac43 Where aae140='150';

第三步就非常简单了,就是将第一步备份的数据直接导入,然后删除备份数据即可,语句如下: insert into ac43 Select * From bak; drop table bak; 这样整个删除数据的工作就完成了。

温馨提示

如果oracle的rowid伪列值对你非常重要,或者别的地方也要用到,则不能简单的这样删除,否则会导致数据关联不上。
第二步删除的时候最好要根据where条件建立索引,否则删除的数据量非常巨大时会很慢。
如果要处理的数据量非常少,可以直接用如下一个语句解决:Delete From ac43 where aae140='150' and rowid not in (select min(rowid) rowid1 from ac43 where aae140='150' group by baz001)
点击展开全文

更多推荐