我的数据库中有一个表,它包含一组嵌套的项目,其中有重要的列为id
和parent
。 parent
始终指向嵌套在其中的行ID。
当我删除一个项目时,它的直接子项开始指向一个不存在的父项,这是我想要纠正的。
我尝试过此查询以重置任何孤立项的父级:
UPDATE menu_item
SET parent = 0
WHERE parent NOT IN (
SELECT id FROM menu_item
);
然而,它给了我一个错误:“你不能在FROM子句中为更新指定目标表'menu_item'。”
解决这个问题的正确方法是什么?
答案 0 :(得分:1)
UPDATE mytable m
LEFT JOIN
mytable mm
ON mm.id = m.parent
SET m.parent = 0
WHERE mm.id IS NULL
答案 1 :(得分:0)
尝试一下:
update m
set parent = 0
from menu_item m
where m.parent not in (select id from menu_item m1);