高效快速刪除Oracle表中重複記錄

來源:互聯網
上載者:User

如轉載請註明出處:http://www.cnblogs.com/xd502djj/archive/2010/08/18/1802130.html

以前的一篇重複資料刪除記錄的雖然還不錯 但是在我遇到重量級的大表時還是顯的力不從心,不小心想到一種新的方法

思路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;  

////熟練了三四步就可以合成一步了

 

再來個效率更高的 使用partition 就更加靈活 和強大 效率高了

 

CREATE TABLE zzcpt_imei_log_sig
AS
   SELECT   IMEID,
            DN,
            XLH,
            PRO_NAME,
            AREA_NAME,
            BRAND,
            M_TYPE,
            reg_time
     FROM   (SELECT   ROW_NUMBER ()
                         OVER (PARTITION BY A.IMEID ORDER BY a.reg_time DESC)
                         rn,
                      a.IMEID,
                      A.DN,
                      A.XLH,
                      a.PRO_NAME,
                      a.AREA_NAME,
                      A.BRAND,
                      A.M_TYPE,
                      a.reg_time
               FROM   zzcpt_imei_log a)
    WHERE   rn = 1;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.