用例很直接。在查看几百万行的评论表之后。我们意识到有许多孤儿的孩子评论。
以下查询无效
DELETE c.* FROM `comment` c
where c.parentId not in (select id from `comment`)
它说的是:
静态分析:
在分析过程中发现了3个错误。
意外的令牌。 (位置7处的“c”附近) 意外的标记。 (位置8附近的“。”) 意外的标记。 (位置9的“*”附近)
MySQL说:文档
我理解这个问题,但想不出其他选择。我在SQL
非常糟糕答案 0 :(得分:1)
您需要使用left join
进行此操作:
DELETE c
FROM comment c LEFT JOIN
comment cp
ON c.parentId = cp.id
WHERE cp.id IS NULL and c.parentId is not null;
请注意:我认为你应该小心。所有评论真的都有一个评论的父母吗?