Résolvez intelligemment l'erreur de syntaxe lorsque la sous-requête MySQL supprime des lignes
Une erreur de syntaxe peut survenir lors de l'utilisation d'une sous-requête comme condition de suppression de lignes dans MySQL. Cette erreur se produit généralement lorsque la table cible de l'opération de suppression (ici term_hierarchy
) est également référencée dans la sous-requête.
Pour résoudre ce problème, une approche alternative est nécessaire. La requête suivante fournit une solution de contournement efficace :
<code class="language-sql">DELETE th.* FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM (SELECT tid FROM term_hierarchy WHERE parent = 1015) AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid) WHERE th2.parent != 1015 );</code>
Dans cette requête, la sous-requête utilisée pour identifier les tid
valeurs à supprimer est enveloppée dans une sous-requête supplémentaire (ici nommée th1
). Cela permet à MySQL d'éviter d'utiliser la table DELETE
dans les clauses WHERE IN
et term_hierarchy
, résolvant ainsi l'erreur de syntaxe.
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!