删除与无效记录有关的自我问题

时间:2019-09-26 20:21:35

标签: mysql sql

我有comments表。这样的结构

id  parent_id  user_id  comment  
--  ---------  -------  -------

我要删除相关值不正确的记录。
对于user_id无效值的删除记录,我使用此查询

DELETE FROM `comments` WHERE `user_id` NOT IN (SELECT `id` FROM `users`)

但是当我尝试删除parent_id为无效数据的记录时,我会使用此查询

DELETE FROM `comments` WHERE `parent_id` NOT IN (SELECT `id` FROM `comments`)

我收到此错误

  

错误代码:1093您不能为更新指定目标表“注释”   在FROM子句

1 个答案:

答案 0 :(得分:1)

您可以通过级联外键约束来做您想做的事情。

也就是说,您可以使用RenderTransform完成此操作:

left join

请注意条件DELETE c FROM comments c LEFT JOIN comments cp ON c.parent_id = cp.id WHERE cp.id IS NULL AND c.parent_id IS NOT NULL; 。 (几乎)您在该列上所做的任何比较都暗示了这一点,包括c.parent_id IS NOT NULL