Let's say that from all the duplicates in contact table, we'll leave only those with the lowest ROWIDs.
So first, let's switch the records in address table that belong to duplicates, to the ones that will remain in contact table:
And finaly, let's delete the duplicates from the contact table:Code:UPDATE addrtbl SET contact_uid = (SELECT contact_uid FROM contacttbl c1 WHERE name = (SELECT name FROM contacttbl c2 WHERE c2.contact_uid = addrtbl.contact_uid) AND NOT EXISTS (SELECT null FROM contacttbl c3 WHERE c3.rowid < c1.rowid) ) WHERE EXISTS (SELECT null FROM contacttbl c4 WHERE contact_uid = addrtbl.contact_uid AND EXISTS (SELECT null FROM contacttbl c5 WHERE c4.name = c5.name AND c5.rowid > c4.rowid));
Code:DELETE FROM contacttbl c1 WHERE EXISTS (SELECT null FROM contacttbl c2 WHERE c2.name = c1.name AND c2.rowid < c1.rowid);




Reply With Quote