Tout d'abord, vous pouvez essayer d'ajouter des index aux champs ProgramName et CustID si vous ne les avez pas déjà.
Déduplication
Vous pouvez regrouper vos enregistrements pour identifier les doublons et, ce faisant, saisir la valeur d'ID minimale pour chaque groupe. Ensuite, supprimez simplement tous les enregistrements dont l'ID n'est pas l'un des MinID.
Méthode In-Clause
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Join-Methode
Vous devrez peut-être l'exécuter plusieurs fois, s'il y a beaucoup de membres par groupe.
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
Certaines personnes ont des problèmes de performances avec In-Clause, d'autres non. Cela dépend beaucoup de vos index et autres. Si l'un est trop lent, essayez l'autre.
En relation :https://stackoverflow.com/a/4192849/127880