標籤: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資料去重