Comment supprimer les lignes en double de MySQL (conserver une ligne)
La déduplication est cruciale pour maintenir une base de données propre et efficace. Si la sélection de valeurs uniques à l'aide d'une requête comme SELECT DISTINCT
est simple, la suppression des doublons via l'opération DELETE
nécessite une approche légèrement différente.
Utilisez DELETE pour supprimer les doublons
Pour supprimer les lignes en double d'une table tout en conservant une copie, vous pouvez utiliser deux DELETE
variantes de requête :
Conservez la ligne avec la valeur d'ID la plus basse :
DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name
Conservez la ligne avec la valeur d'ID la plus élevée :
DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name
Notez que ces requêtes utilisent des jointures internes (JOIN
) pour comparer les lignes en fonction de la colonne name
. Ils identifient et suppriment ensuite les lignes en double en fonction de la condition selon laquelle une ligne a une valeur d'ID supérieure ou inférieure à celle d'une autre ligne.
Remarque :
AND n1.id != n2.id
dans la requête garantit que les lignes ne sont pas supprimées si elles ont le même nom mais des valeurs d'ID différentes. Une alternative à l'utilisation d'INSERT :
Pour les tableaux plus grands, utiliser DISTINCT
avec INSERT
est un moyen plus efficace de supprimer les doublons.
INSERT INTO tempTableName(cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;
Cette méthode crée une nouvelle table contenant uniquement des valeurs uniques, supprimant ainsi efficacement les doublons.
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!