一、完全重復數據去重方法
具體思路是,首先創建一個臨時表,然后將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;
實例:
-- 根據MAX(a.rowid)篩選重復的數據,獲得一張數據不重復的臨時表
create table 臨時表 as select a.ip,a.port,MAX(a.ROWID) dataid from ipresult a GROUP BY a.ip,a.port;
-- 刪除正式表中重復數據,只保留最新的一條數據 delete from ipresult a where a.rowid != ( select b.dataid from 臨時表 b where a.ip = b.ip and a.port= b.port );
--刪除臨時表並提交 drop table 臨時表; commit;
‘
引用資料: