Maison > base de données > tutoriel mysql > Comment supprimer efficacement les lignes en double d'une table MySQL tout en préservant une seule instance ?

Comment supprimer efficacement les lignes en double d'une table MySQL tout en préservant une seule instance ?

Patricia Arquette
Libérer: 2025-01-23 13:31:14
original
747 Les gens l'ont consulté

How to Efficiently Remove Duplicate Rows from a MySQL Table While Preserving a Single Instance?

Suppression efficace des lignes en double dans MySQL

Scénario : Les lignes en double dans les tables MySQL peuvent provenir de diverses sources, notamment d'erreurs de saisie de données. La suppression de ces doublons est essentielle pour maintenir l'intégrité des données et les performances optimales de la base de données.

Problème : Le défi réside dans la suppression de toutes les instances sauf une de chaque ligne en double.

Solution et précautions :

Remarque critique : Sauvegardez toujours votre table avant d'exécuter une requête DELETE. Des instructions DELETE mal mises en œuvre peuvent entraîner une perte de données irréversible.

Méthode 1 : Conserver la ligne avec l'ID le plus bas

Cette approche conserve la ligne avec la plus petite valeur d'ID :

<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

Méthode 2 : Préserver la ligne avec l'ID le plus élevé

Cette alternative conserve la ligne possédant la plus grande valeur d'ID :

<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

Efficacité améliorée pour les grandes tables :

Pour les tables de grande taille, la INSERT ... SELECT DISTINCT méthode suivante fournit une solution plus efficace :

<code class="language-sql">CREATE TEMPORARY TABLE tempTableName AS
SELECT DISTINCT cellId, attributeId, entityRowId, value
FROM tableName;

TRUNCATE TABLE tableName;

INSERT INTO tableName SELECT * FROM tempTableName;

DROP TEMPORARY TABLE tempTableName;</code>
Copier après la connexion

Cela crée une table temporaire contenant uniquement des lignes uniques, tronque la table d'origine, puis la remplit avec les données uniques de la table temporaire. C'est généralement plus rapide que d'utiliser DELETE pour les grands ensembles de données. N'oubliez pas de remplacer tableName, cellId, attributeId, entityRowId et value par vos noms de colonnes réels.

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