Maison > base de données > tutoriel mysql > le corps du texte

Comment puis-je supprimer les lignes en double dans MySQL sans recevoir d'erreur ?

Linda Hamilton
Libérer: 2024-11-04 03:02:29
original
858 Les gens l'ont consulté

How Can I Delete Duplicate Rows in MySQL Without Receiving an Error?

Suppression de lignes en double dans MySQL : une astuce de table unique

Le traitement des enregistrements en double dans une base de données peut être un problème courant. Dans MySQL, la suppression de ces duplications peut être réalisée en plusieurs étapes. Passons en revue un scénario spécifique et abordons les pièges potentiels en cours de route.

Supposons que nous ayons une table nommée « employé » avec les champs « empid », « empname » et « empssn ». Pour identifier les enregistrements en double, nous exécutons une requête pour compter les occurrences de chaque 'empssn' :

<code class="sql">SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1</code>
Copier après la connexion

Cette requête renverra des lignes indiquant quels 'empssn' apparaissent plus d'une fois.

Ensuite, nous essayons de supprimer les enregistrements en double à l'aide de la requête suivante :

<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT MIN(empid), empssn FROM employee GROUP BY empssn);</code>
Copier après la connexion

Malheureusement, cette requête peut rencontrer l'erreur : "Vous ne pouvez pas spécifier la table cible 'employé' pour la mise à jour dans la clause FROM."

Pour contourner cette erreur, nous pouvons utiliser une technique qui consiste à encapsuler la requête interne dans une table dérivée :

<code class="sql">DELETE FROM employee WHERE (empid, empssn) NOT IN (SELECT empid, empssn FROM (SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn) X);</code>
Copier après la connexion

Cette table dérivée agit effectivement comme une table temporaire, nous permettant de référencer la cible table 'employé' dans l'instruction DELETE et la clause FROM.

En implémentant cette astuce, nous pouvons réussir à supprimer les enregistrements en double de la table 'employé'. Cette solution résout non seulement l'obstacle technique, mais fournit également une compréhension plus approfondie de la manipulation de bases de données dans MySQL.

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