Supprimer les lignes en double (données en double) dans MySQL
Question :
Comment supprimer les lignes en double d'une table MySQL tout en conservant un seul enregistrement pour chaque valeur unique ?
Exemple :
Considérez les données suivantes dans le tableau des noms :
id | name |
---|---|
1 | |
2 | yahoo |
3 | msn |
4 | |
5 | |
6 | yahoo |
Solution :
Attention : Prenez toujours la précaution d'effectuer d'abord cette opération sur une copie de test du tableau.
Pour supprimer toutes les lignes en double (en conserver une) et conserver l'enregistrement avec la valeur d'identifiant la plus basse ou la plus élevée, utilisez la requête suivante :
Conserver la valeur d'identifiant 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>
Conserver la valeur d'identifiant 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>
Notes supplémentaires :
AND n1.id != n2.id
aux deux requêtes pour éviter de supprimer accidentellement toutes les lignes. <code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value) SELECT DISTINCT cellId,attributeId,entityRowId,value FROM tableName;</code>
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!