多语言展示
当前在线:615今日阅读:126今日分享:42

oracle数据库删除重复数据

近期搜索oracle数据库删除重复数据的方法,发现没有找到满意的答案,然后自己写了一个。方案分三步即可简单解决大数据的重复问题。
方法/步骤
1

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

2

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

3

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

注意事项
1

如果oracle的rowid伪列值对你非常重要,或者别的地方也要用到,则不能简单的这样删除,否则会导致数据关联不上。

2

第二步删除的时候最好要根据where条件建立索引,否则删除的数据量非常巨大时会很慢。

3

如果要处理的数据量非常少,可以直接用如下一个语句解决:Delete From ac43 where aae140='150' and rowid not in (select min(rowid) rowid1 from ac43 where aae140='150' group by baz001)

推荐信息