Maison >base de données >tutoriel mysql >Comment supprimer les enregistrements en double dans MySQL tout en conservant les dernières ?

Comment supprimer les enregistrements en double dans MySQL tout en conservant les dernières ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-16 12:50:03259parcourir

How to Delete Duplicate Records in MySQL While Keeping the Latest?

Supprimer les enregistrements en double dans MySQL tout en préservant les derniers

Dans une base de données, il est courant de rencontrer des enregistrements en double, en particulier dans les tables avec des identifiants uniques . Dans MySQL, vous pouvez être confronté à une situation où les e-mails sont dupliqués et vous souhaitez conserver uniquement le dernier avec l'ID le plus récent.

Pour résoudre ce problème, nous pouvons suivre les étapes suivantes :

  1. Identifier les e-mails en double : Déterminez les e-mails qui apparaissent plus d'une fois dans le tableau.
  2. Trouver le dernier identifiant pour chaque e-mail en double : Pour chaque e-mail en double, récupérez l'identifiant le plus élevé, qui représente l'insertion la plus récente.
  3. Supprimer Doublons avec des identifiants plus anciens : Supprimez tous les doublons à l'exception des derniers identifiés dans le précédent étape.

Mise en œuvre :

Considérez la table MySQL suivante nommée test avec les colonnes id et email :

| id | email |
|---|---|
| 1 | aaa |
| 2 | bbb |
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 6 | eee |
| 7 | aaa |
| 8 | aaa |
| 9 | eee |

Pour supprimer les doublons emails et conserver les derniers, nous pouvons exécuter la requête suivante :

DELETE test
FROM test
INNER JOIN (
  SELECT MAX(id) AS lastId, email
  FROM test
  GROUP BY email
  HAVING COUNT(*) > 1
) duplic ON duplic.email = test.email
WHERE test.id < duplic.lastId;

Cette requête récupère les derniers ID pour les e-mails en double et supprime tous les doublons avec des identifiants plus anciens. Après avoir exécuté la requête, la table de test apparaîtra comme suit :

| id | email |
|---|---|
| 3 | ccc |
| 4 | bbb |
| 5 | ddd |
| 8 | aaa |
| 9 | eee |

Seuls les derniers doublons avec les identifiants les plus élevés ont été conservés, satisfaisant ainsi à l'exigence de conserver les adresses e-mail les plus récentes dans la table.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn