Maison > base de données > tutoriel mysql > le corps du texte

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

Mary-Kate Olsen
Libérer: 2024-11-16 12:50:03
original
202 Les gens l'ont consulté

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 |
Copier après la connexion

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;
Copier après la connexion

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 |
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal