Zunächst können Sie versuchen, Indizes zu den Feldern ProgramName und CustID hinzuzufügen, falls Sie diese noch nicht haben.
De-Duping
Sie können Ihre Datensätze gruppieren, um Duplikate zu identifizieren, und dabei den Mindest-ID-Wert für jede Gruppe abrufen. Löschen Sie dann einfach alle Datensätze, deren ID nicht zu den MinIDs gehört.
In-Klausel-Methode
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Join-Methode
Möglicherweise müssen Sie dies mehr als einmal ausführen, wenn es viele Mitglieder pro Gruppe gibt.
DELETE P
FROM ProgramsList as P
INNER JOIN
(select count(*) as Count, max(id) as MaxID
from ProgramsList
group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2
Einige Leute haben Performance-Probleme mit der In-Klausel, andere nicht. Es hängt viel von Ihren Indizes und so ab. Wenn einer zu langsam ist, versuchen Sie den anderen.
Verwandte:https://stackoverflow.com/a/4192849/127880