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 :
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!