Ich habe eine Tabelle Transaktion, die Duplikate hat. Ich möchte den Datensatz, der minimale id hatte und löschen Sie alle Duplikate auf der Grundlage von vier Felder DATE, AMOUNT, REFNUMBER, PARENTFOLDERID zu halten. Ich habe diese Abfrage geschrieben, aber ich bin mir nicht sicher, ob sie effizient geschrieben werden kann. Glauben Sie, dass es einen besseren Weg gibt? Ich frage, weil ich mir Sorgen über die Laufzeit mache.
DELETE FROM TRANSACTION
WHERE ID IN
(SELECT FIT2.ID
FROM
(SELECT MIN(ID) AS ID, FIT.DATE, FIT.AMOUNT, FIT.REFNUMBER, FIT.PARENTFOLDERID
FROM EWORK.TRANSACTION FIT
GROUP BY FIT.DATE, FIT.AMOUNT , FIT.REFNUMBER, FIT.PARENTFOLDERID
HAVING COUNT(1)>1 and FIT.AMOUNT >0) FIT1,
EWORK.TRANSACTION FIT2
WHERE FIT1.DATE=FIT2.DATE AND
FIT1.AMOUNT=FIT2.AMOUNT AND
FIT1.REFNUMBER=FIT2.REFNUMBER AND
FIT1.PARENTFOLDERID=FIT2.PARENTFOLDERID AND
FIT1.ID<>FIT2.ID)