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 :
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id > n2.id AND n1.name = n2.name</code>
Conservez la ligne avec la valeur d'ID la plus élevée :
<code class="language-sql">DELETE n1 FROM names n1, names n2 WHERE n1.id < n2.id AND n1.name = n2.name</code>
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.
<code class="language-sql">INSERT INTO tempTableName(cellId, attributeId, entityRowId, value) SELECT DISTINCT cellId, attributeId, entityRowId, value FROM tableName;</code>
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!