oracle删除大量重复数据
来源:互联网 发布:网络好声音香水有毒 编辑:程序博客网 时间:2024/05/29 07:04
2.删除重复记录的几种方法:
(1).适用于有大量重复记录的情况(在C1,C10和C20列上建有索引的时候,用以下语句效率会很高):
SQL>delete cz where (c1,c10,c20) in (select c1,c10,
c20 from cz group by c1,c10,c20 having count(*)>1) and rowid not in
(select min(rowid) from cz group by c1,c10,c20 having count(*)>1);
SQL>delete cz where rowid not in
(select min(rowid) from cz group by c1,c10,c20);
(2).适用于有少量重复记录的情况(注意,对于有大量重复记录的情况,用以下语句效率会很低):
SQL>delete from cz a where a.rowid!=(select max(rowid)
from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);
SQL>delete from cz a where a.rowid<(select max(rowid)
from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);
SQL>delete from cz a where rowid <(select max(rowid)
from cz where c1=a.c1 and c10=a.c10 and c20=a.c20);
(3).适用于有少量重复记录的情况(临时表法):
SQL>create table test as select distinct * from cz;
(建一个临时表test用来存放重复的记录)
SQL>truncate table cz; (清空cz表的数据,但保留cz表的结构)
SQL>insert into cz select * from test;
(再将临时表test里的内容反插回来)
create index index_ts_top on ts_top_dom(top_dom);
delete ts_top_dom where top_dom in (select top_dom from ts_top_dom group by top_dom having count(*)>1) and rowid not in
(select min(rowid) from ts_top_dom group by top_dom having count(*)>1);
delete ts_top_dom where rowid not in
(select min(rowid) fromts_top_dom group by top_dom );
select distinct TOP_DOM from TOP_DOM
truncate table ts_top_dom;//快速删除表中数据
(1).适用于有大量重复记录的情况(在C1,C10和C20列上建有索引的时候,用以下语句效率会很高):
SQL>delete cz where (c1,c10,c20) in (select c1,c10,
c20 from cz group by c1,c10,c20 having count(*)>1) and rowid not in
(select min(rowid) from cz group by c1,c10,c20 having count(*)>1);
SQL>delete cz where rowid not in
(select min(rowid) from cz group by c1,c10,c20);
(2).适用于有少量重复记录的情况(注意,对于有大量重复记录的情况,用以下语句效率会很低):
SQL>delete from cz a where a.rowid!=(select max(rowid)
from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);
SQL>delete from cz a where a.rowid<(select max(rowid)
from cz b where a.c1=b.c1 and a.c10=b.c10 and a.c20=b.c20);
SQL>delete from cz a where rowid <(select max(rowid)
from cz where c1=a.c1 and c10=a.c10 and c20=a.c20);
(3).适用于有少量重复记录的情况(临时表法):
SQL>create table test as select distinct * from cz;
(建一个临时表test用来存放重复的记录)
SQL>truncate table cz; (清空cz表的数据,但保留cz表的结构)
SQL>insert into cz select * from test;
(再将临时表test里的内容反插回来)
create index index_ts_top on ts_top_dom(top_dom);
delete ts_top_dom where top_dom in (select top_dom from ts_top_dom group by top_dom having count(*)>1) and rowid not in
(select min(rowid) from ts_top_dom group by top_dom having count(*)>1);
delete ts_top_dom where rowid not in
(select min(rowid) fromts_top_dom group by top_dom );
select distinct TOP_DOM from TOP_DOM
truncate table ts_top_dom;//快速删除表中数据
- oracle删除大量重复数据
- ORACLE删除重复记录(大量重复数据)
- oracle 删除大量数据
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- oracle 快速删除大批量数据方法(全部删除,条件删除,删除大量重复记录)
- Oracle大量删除数据方案
- oracle删除重复数据
- Oracle删除重复数据
- oracle删除重复数据
- oracle 删除重复数据
- Oracle删除重复数据
- ORACLE 删除重复数据
- oracle 删除重复数据
- Oracle删除重复数据
- ORACLE 删除重复数据
- oracle 删除重复数据
- 负载均衡技术列表
- 各种文档
- OpenCV码源笔记——Decision Tree决策树
- Build Your Programming Technical Skills
- 第十周 任务二
- oracle删除大量重复数据
- Python完全新手教程【经典】
- 在Oracle中查看各个表、表空间占用空间的大小
- 比较QT和MFC两个界面库
- 构造器Constructor
- 第十周实验报告1
- 写给新手程序员的一封信
- SQL Server 2008 Management Studio 在设计中不能修改表的
- oracle中查看表是否被锁