select distinct * into tempt_table from a; --tempt_table,a分别是两个表
trancate table a;
insert into a select * from tempt_table;

解决方案 »

  1.   

    麻烦,贴上我保存的资料给你参考
    删除重复数据的一种高效的方法表demo是重复拷贝自dba_objects,有88万左右,不重复的是27323,没有索引
    方法一:delete from demo a where a.rowid <> (select max(rowid) from demo b where
                                                                          b.object_id=a.object_id);
                耗时:几个小时以上
    方法二: delete from demo where rowid in 
                  (select rid from 
                              (select rowid rid,row_number() over(partition by object_id order by rowid) rn
                                 from demo)
                   where rn <> 1 );
       耗时:30秒方法三: create table demo2 as 
                  select object_id,owner... from
                           (select demo.*,row_number() over(partition by object_id order by rowid) rn from demo)
                             where rn = 1;
                  truncate table demo; insert into demo select * from demo2; drop table demo2;
    共耗时: 10秒,适合大数据量的情况,产生更少回滚量;