Maison  >  Article  >  base de données  >  Pourquoi l'erreur \"DELETE FROM employ WHERE (empid, empssn) NOT IN (...)\" lors de la suppression des doublons dans MySQL ?

Pourquoi l'erreur \"DELETE FROM employ WHERE (empid, empssn) NOT IN (...)\" lors de la suppression des doublons dans MySQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 16:24:31680parcourir

Why Does

Suppression des lignes en double dans les tables MySQL : résolution de l'erreur

Pour éliminer les enregistrements en double d'une table nommée « employé » qui contient les champs « empid », « empid », et 'empssn', identifiez-les d'abord à l'aide de la requête :

<code class="sql">SELECT COUNT(empssn), empssn FROM employee 
GROUP BY empssn 
HAVING COUNT(empssn) > 1</code>

Cependant, la requête de suppression ultérieure :

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

rencontre une erreur lors de la spécification de la table cible 'employé' dans le Clause FROM.

Solution :

Pour résoudre cette erreur, enveloppez la sous-requête 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>

Cette modification vous permet de référencez la table d'origine dans la sous-requête et supprimez avec succès les lignes en double.

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