自己建個如下表
直接上sql 親自測試 真實有效
----針對單個字段重復數據
delete FROM test a WHERE a.address in ( select s.address from ( SELECT t.address
FROM test t
GROUP BY t.address
HAVING COUNT( * ) >1) s )
and a.id not in (select u.id from (select min(d.id) as id from test d group by d.address having count(* )>1) u )
------針對多個字段重復數據
delete FROM test a WHERE (a.address,a.name) in ( select s.address,s.name from ( SELECT t.address,t.name
FROM test t
GROUP BY t.address,t.name
HAVING COUNT( * ) >1) s )
and a.id not in (select u.id from (select min(d.id) as id from test d group by d.address,d.name having count(* )>1) u )
那么orcal數據庫怎么做呢 可以利用orcal的偽列 rowid 來處理
delete from USER_NAME where rowid not in (select min(rowid) from USER_NAME group by name)