Oracle表中重复记录高效删除法


 以前的一篇删除重复记录的虽然还不错 但是在我遇到重量级的大表时还是显的力不从心,不小心想到一种新的方法

  思路1、保存不重复的记录

  2、保存重复记录中的一个rowid

  //3、删除原表中rowid不为步骤2中rowid的记录 ,留下重复数据中的一条

  3.找出记录中rowid为步骤2中rowid的记录

  4 、1和3数据连接就是所要的数据了

  具体操作例子

  第一步:

  SQL> create table xxfgs_sig as (select imeid imeid,max(dn) dn,max(xlh) xlh,max(pro_name) pro_name,max(area_name) area_na

  me,max(brand) brand,max(m_type) m_type from xxfgs group by imeid having count(*)<2);

  第二步:

  SQL> create table xxfgs_row as (select max(rowid) rowdata,imeid from xxfgs group by imeid having count(*)>1);

  //第三步:////可以考虑给meid建索引

  //SQL>delete from xxfgs where rowid not in (select rowdata from xxfgs_row);

  //或者

  //SQL>delete from xxfgs a where a.rowid <>(select rowdata from xxgs_row b where a.meid=b.meid);

  第三步:

  SQL>create table xxfgs_dub as (select * from xxfgs where rowid in (select rowdata from xxfgs_row));

  第四步:

  SQL>insert into xxfgs_sig select * from xxfgs_dub;



相关阅读:
DIV+CSS 全屏垂直居中的一个办法
vbs删除文本文件的行的函数
ASP.NET页面中标题单点解决方案
仔细考虑维护脚本
CentOS安装rpm包时遇到Header V3 DSA signature: NOKEY时解决办法
Lesson02_05 头元素
win2003文件夹权限设置脚本代码
提高网站权重:提高网站PR和提高网站更新度
ASP生成XBM图可用作验证码
CSS3的新特性介绍
CSS+JS构建的图片查看器" target="_blank">CSS+JS构建的图片查看器
关于session在PHP5的配置文件中的详细设置参数说明
LINUX系统一个网卡绑定多个IP的方法
解决ASM无法启动问题
快速导航

Copyright © 2016 phpStudy | 皖ICP备18014864号-4