SQL DELETE with JOIN another table for WHERE condition

后端 未结 4 1571
说谎
说谎 2020-11-27 17:44

I have to delete rows from guide_category that have no relation with guide table (dead relations).

Here is what I want to do, but it of cou

4条回答
  •  悲&欢浪女
    2020-11-27 18:21

    Due to the locking implementation issues, MySQL does not allow referencing the affected table with DELETE or UPDATE.

    You need to make a JOIN here instead:

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

    or just use a NOT IN:

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

提交回复
热议问题