Maison >base de données >tutoriel mysql >Comment utiliser correctement les sous-requêtes dans les instructions MySQL DELETE ?
Conditions de sous-requête dans l'instruction MySQL DELETE
Vous pouvez rencontrer des erreurs de syntaxe lors de l'utilisation d'une sous-requête comme condition pour supprimer des lignes d'une table. Pour résoudre ce problème, vous devez tenir compte des limitations liées à l'utilisation de sous-requêtes dans les opérations DELETE.
Dans MySQL, vous ne pouvez pas utiliser de sous-requêtes directement dans la clause WHERE d'une instruction DELETE. Il existe cependant une manière astucieuse de contourner cette limitation. En utilisant une sous-requête supplémentaire pour inclure la sous-requête d’origine, l’opération de suppression peut être effectuée avec succès.
Par exemple, la requête suivante :
<code class="language-sql">DELETE FROM term_hierarchy AS th WHERE th.parent = 1015 AND th.tid IN ( SELECT DISTINCT(th1.tid) FROM term_hierarchy AS th1 INNER JOIN term_hierarchy AS th2 ON (th1.tid = th2.tid AND th2.parent != 1015) WHERE th1.parent = 1015 );</code>
produira une erreur de syntaxe. Cependant, en encapsulant la sous-requête dans une autre sous-requête comme ceci :
<code class="language-sql">DELETE e.* FROM tableE e WHERE id IN (SELECT id FROM (SELECT id FROM tableE WHERE arg = 1 AND foo = 'bar') x);</code>
L'opération de suppression peut être effectuée avec succès. N'oubliez pas que la sous-requête englobante doit être nommée, comme le montre l'alias "x" dans l'exemple.
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!