Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL DELETE mit JOIN einer anderen Tabelle für WHERE-Bedingung

Aufgrund der Probleme bei der Sperrimplementierung wird MySQL erlaubt nicht, die betroffene Tabelle mit DELETE zu referenzieren oder UPDATE .

Sie müssen einen JOIN machen hier stattdessen:

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

oder verwenden Sie einfach ein NOT IN :

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