Maison > base de données > tutoriel mysql > Comment supprimer les lignes en double dans MySQL tout en en gardant une ?

Comment supprimer les lignes en double dans MySQL tout en en gardant une ?

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

How to Delete Duplicate Rows in MySQL While Keeping One?

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 :

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

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 :

  • Assurez-vous de créer une copie de test de la table avant d'exécuter ces requêtes, car elles peuvent supprimer toutes les lignes si elles sont mal utilisées.
  • L'inclusion de la condition 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>
Copier après la connexion

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!

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