我有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子句中

最佳答案

您可以通过级联外键约束来完成所需的操作。

也就是说,您可以使用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。您(几乎)在该列上所做的任何比较(包括NOT IN)都暗示了这一点。

关于mysql - 删除无效记录相关的自我问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58124216/

10-17 01:50