1. Find redundant duplicate records in the table, duplicate records are based on a single field (Peopleid) to determine the select * from people where Peopleid in (select Peopleid from people GROUP by people Id having count (Peopleid) > 1)
2, delete redundant records in the table, duplicate records are based on a single field (Peopleid) to judge, leaving only the rowID minimum record delete from people where Peopleid in (select Peopleid from people gr OUP by Peopleid have count (Peopleid) > 1) and rowID not in (select min (rowid) from people GROUP by Peopleid have CO UNT (Peopleid) >1)
3. Find redundant duplicate records in the table (multiple fields) SELECT * from Vitae a WHERE (A.PEOPLEID,A.SEQ) in (select Peopleid,seq from Vitae GROUP by Peopleid,se Q Having COUNT (*) > 1)
4. Delete redundant duplicate records (multiple fields) in the table, leaving only the rowID minimum record delete from Vitae a where (A.PEOPLEID,A.SEQ) in (select Peopleid,seq from Vitae GROUP by PEOPLEID,SEQ have count (*) > 1) and rowID not in (select min (rowid) from Vitae GROUP by PEOPLEID,SEQ have count (*) >1)
5. Find redundant duplicate records in the table (multiple fields), does not contain ROWID minimum records select * from Vitae a WHERE (A.PEOPLEID,A.SEQ) in (select Peopleid,seq from Vitae group by PEOPLEID,SEQ have count (*) > 1) and rowID not in (select min (rowid) from Vitae GROUP by PEOPLEID,SEQ have count ( *) >1)
The key to see what field is the same as the repetition, if it is arrearmain_id, reladdr, Addrsourcetype, then this write is the most efficient, because the rowid:delete from Cncc_customeraddr_tab t where T.rowid > (select min (x.rowid) from Cncc_customeraddr_tab x where x.arrearmain_id = t.arrearmain_id and X.R Eladdr = t.reladdr and X.addrsourcetype = t.addrsourcetype) and T.addrsourcetype = ' 1300000001 '
Transferred from: http://www.cnblogs.com/wjlstation/archive/2012/06/20/2555832.html
Oracle deletes duplicate records for the same table