Maison > base de données > tutoriel mysql > Comment utiliser correctement les sous-requêtes dans les instructions MySQL DELETE ?

Comment utiliser correctement les sous-requêtes dans les instructions MySQL DELETE ?

Patricia Arquette
Libérer: 2025-01-10 17:56:42
original
446 Les gens l'ont consulté

How to Correctly Use Subqueries in MySQL DELETE Statements?

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal