我有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/