À vrai dire, je ne maîtrise pas tout à fait les formules Excel alors mon réflexe de programmeur a été d'importer la liste dans une table temporaire de la base de données et d'évaluer combien d'enregistrements s'y retrouvent plus d'une fois :
SELECT email, count(*)En créant la table temporaire, j'ai pris soin d'ajouter une clé primaire IDENTITY(1,1) pour pouvoir en tirer profit au moment de la suppression.
FROM contacts
GROUP BY email
HAVING count(*) > 1
DELETE c1Comme la séquence de la clé primaire id s'incrémente pour chaque enregistrement au moment de l'importation, je peux m'en servir pour supprimer les enregistrements identiques trouvés avec le produit croisé effectué sur la table elle-même.
FROM contacts c1, contacts c2
WHERE c1.email = c2.email
AND c1.id > c2.id
Ainsi, deux enregistrements possédant la même clé email auront deux identificateurs différents :
id name emailPour chaque combinaison, seul celui dont l'ID est le plus petit sera conservé et les autres seront retirés. Sur une table déjà existante, j'aurais plutôt eu tendance à comparer le champ de date de création ou de modification afin de ne conserver que le plus récent.
100 code 18 code18.blogspot@gmail.com
200 code 18 code18.blogspot@gmail.com
tout simplement parfait
RépondreEffacermerci
Une autre solution est d'utiliser ROW_NUMBER ()
RépondreEffacerSupprimer les lignes dupliquées d'une table SQL Server