Maison >base de données >tutoriel mysql >Comment supprimer les lignes en double d'une table MySQL ?

Comment supprimer les lignes en double d'une table MySQL ?

DDD
DDDoriginal
2024-11-03 04:59:02979parcourir

How to Delete Duplicate Rows from a MySQL Table?

Suppression de lignes en double d'une table MySQL

Lorsque vous travaillez avec de grands ensembles de données, il est essentiel d'identifier et de supprimer les enregistrements en double. Ce guide fournira une solution complète pour supprimer les lignes en double d'une table MySQL nommée « employé » qui se compose de trois champs : empid, empname et empssn.

Identification des enregistrements en double

Pour identifier les enregistrements en double, vous pouvez utiliser la requête suivante :

SELECT COUNT(empssn), empssn
FROM employee 
GROUP BY empssn
HAVING COUNT(empssn) > 1

Cette requête renvoie le nombre d'occurrences pour chaque empssn unique. La clause HAVING filtre les lignes dont le nombre est supérieur à 1, identifiant efficacement les valeurs empssn en double.

Suppression des enregistrements en double

Pour supprimer les enregistrements en double, nous pouvons utiliser la requête suivante :

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT MIN(empid), empssn 
    FROM employee 
    GROUP BY empssn
);

Cependant, MySQL renvoie une erreur si la table cible ("employé") est spécifiée à la fois dans la clause DELETE et dans la clause FROM de la sous-requête. Pour surmonter ce problème, nous pouvons envelopper la sous-requête dans une table dérivée, comme suit :

DELETE FROM employee 
WHERE (empid, empssn) NOT IN (
    SELECT empid, empssn 
    FROM (
        SELECT MIN(empid) AS empid, empssn 
        FROM employee 
        GROUP BY empssn
    ) X
);

Cette requête modifiée supprime efficacement les enregistrements en double tout en évitant le conflit de table cible. En conséquence, la base de données ne conserve que les enregistrements avec l'empid minimum pour chaque valeur empssn unique.

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!

Déclaration:
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