create table 臨時表 as select a.字段1,a.字段2,MAX(a.ROWID) dataid from 正式表 a GROUP BY a.字段1,a.字段2; delete from 表名 a where a.rowid != ( select b.dataid from 臨時表 b where a.字段1 = b.字段1 and a.字段2 = b.字段2 ); commit;
二、對于完全重復記錄的刪除
對于表中兩行記錄完全一樣的情況,可以用下面語句獲取到去掉重復數據后的記錄:
select distinct * from 表名
可以將查詢的記錄放到臨時表中,然后再將原來的表記錄刪除,最后將臨時表的數據導回原來的表中。如下:
CREATE TABLE 臨時表 AS (select distinct * from 表名); drop table 正式表; insert into 正式表 (select * from 臨時表); drop table 臨時表;