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!