Oracle資料去重

來源:互聯網
上載者:User

標籤:tar   where   式表   插入   into   strong   creat   sele   tin   

一、完全重複資料去重方法

   具體思路是,首先建立一個暫存資料表,然後將DISTINCT之後的表資料插入到這個暫存資料表中;然後清空原表資料;再講暫存資料表中的資料插入到原表中;最後刪除暫存資料表。

  對於表中完全重複資料去重,可以採用以下SQL語句。

      --Code

     CREATE TABLE "#temp" AS (SELECTDISTINCT * FROM 表名);   --建立暫存資料表,並把DISTINCT 去重後的資料插入到暫存資料表中

     truncate TABLE 表名;   --清空原表資料

     INSERT INTO 表名 (SELECT * FROM "#temp");   --將暫存資料表資料插入到原表中

    DROP TABLE "#temp";   --刪除暫存資料表

 

 二、部分資料去重方法 

我們可以考慮建立暫存資料表,將需要判斷重複的欄位、rowid插入暫存資料表中,然後刪除的時候在進行比較。

createtable 暫存資料表 as select a.欄位1,a.欄位2,MAX(a.ROWID) dataid from 正式表 a GROUPBY a.欄位1,a.欄位2; deletefrom 表名 a where a.rowid != ( select b.dataid from 暫存資料表 b where a.欄位1 = b.欄位1 and a.欄位2 = b.欄位2 ); commit;

執行個體:思路

 1、根據上面的思路操作

 2、刪除正式表,然後把暫存資料表資料插入到正式表中

-- 根據MAX(a.rowid)篩選重複的資料,獲得一張資料不重複的暫存資料表
create table 暫存資料表 asselect a.ip,a.port,MAX(a.ROWID) dataid from ipresulta GROUP BY a.ip,a.port;
-- 刪除正式表中重複資料,只保留最新的一條資料delete from ipresult awhere a.rowid !=(select b.dataid from 暫存資料表 bwhere a.ip = b.ip anda.port= b.port);
--刪除暫存資料表並提交drop table 暫存資料表;commit;

引用資料:

      Oracle資料庫中重複資料刪除方法:部分去重+完全去重’

 

Oracle資料去重

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.