Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQL DELETE avec JOIN une autre table pour la condition WHERE

En raison des problèmes d'implémentation de verrouillage, MySQL ne permet pas de référencer la table affectée avec DELETE ou UPDATE .

Vous devez faire un JOIN ici à la place :

DELETE  gc.*
FROM    guide_category AS gc 
LEFT JOIN
        guide AS g 
ON      g.id_guide = gc.id_guide
WHERE   g.title IS NULL

ou utilisez simplement un NOT IN :

DELETE  
FROM    guide_category AS gc 
WHERE   id_guide NOT IN
        (
        SELECT  id_guide
        FROM    guide
        )