Maison > base de données > tutoriel mysql > Comment supprimer efficacement les lignes en double dans MySQL tout en conservant un seul enregistrement ?

Comment supprimer efficacement les lignes en double dans MySQL tout en conservant un seul enregistrement ?

Barbara Streisand
Libérer: 2025-01-23 13:21:10
original
625 Les gens l'ont consulté

How to Efficiently Delete Duplicate Rows in MySQL While Keeping One Record?

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 google
2 yahoo
3 msn
4 google
5 google
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>
Copier après la connexion

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>
Copier après la connexion

Notes supplémentaires :

  • Assurez-vous d'ajouter la condition AND n1.id != n2.id aux deux requêtes pour éviter de supprimer accidentellement toutes les lignes.
  • Cette méthode est coûteuse en calcul et peut interrompre votre connexion si la table est volumineuse.
  • Pour les grandes tables, envisagez d'utiliser INSERT avec DISTINCT comme alternative plus rapide :
<code class="language-sql">INSERT INTO tempTableName(cellId,attributeId,entityRowId,value)
    SELECT DISTINCT cellId,attributeId,entityRowId,value
    FROM tableName;</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal