Maison >base de données >tutoriel mysql >Comment supprimer les lignes en double d'une table MySQL (versions 5.0 et supérieures) ?
Suppression des doublons d'une table MySQL
Dans MySQL, vous pouvez rencontrer un scénario dans lequel vous devez supprimer les lignes en double d'une table tout en vous assurant identification unique via une colonne ID. Bien que la requête fournie soit valide pour MySQL 5.7 et supérieur, elle ne fonctionne pas dans les versions antérieures comme la 5.0.
Pour obtenir le comportement souhaité dans MySQL 5.0, vous pouvez réécrire la requête en utilisant l'opérateur IN plutôt que = pour comparer les ID avec le jeu de résultats de la sous-requête. De plus, vous ne pouvez pas modifier directement une table à partir d'une sous-requête au sein de la même requête.
Pour résoudre cette limitation, vous pouvez soit exécuter des requêtes SELECT et DELETE distinctes, soit utiliser des sous-requêtes imbriquées pour alias le résultat de la sous-requête interne. Voici un exemple d'approche de sous-requête imbriquée :
DELETE FROM posts WHERE id IN ( SELECT * FROM ( SELECT id FROM posts GROUP BY id HAVING ( COUNT(id) > 1 ) ) AS p )
Alternativement, comme suggéré par Mchl, vous pouvez utiliser des jointures pour supprimer les lignes en double en joignant la table avec elle-même en fonction de la colonne ID et en utilisant la clause HAVING pour filtrer les identifiants en double.
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!