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!