我有一个像这样的类别表
id name parent_id
1 category1 0
2 sub1 1
3 sub11 2
4 sub12 2
...
我添加了一个新列haschild
如果我尝试此查询工作正常
SELECT CASE WHEN
(select COUNT(*) from category A where A.parent_id = B.id) > 0
THEN 1 ELSE 0 END AS haschild
from category B
这告诉我所有类别的孩子都有1,如果没有孩子的0
现在我需要更新我的新列haschild
使用此值
espected:
id name parent_id haschild
1 category1 0 1
2 sub1 1 1
3 sub11 2 0
4 sub12 2 0
我试过了
UPDATE category SET haschild =
(SELECT CASE WHEN
(select COUNT(*) from category A where A.parent_id = B.id) > 0
THEN 1 ELSE 0 END AS haschild
from category B)
但得到了这个错误:
1093 - 您无法在FROM子句
中为更新指定目标表'category'
我还在google和stackoverflow中阅读了关于此错误的一些答案,我已经明白在MySQL中,无法通过子查询更新一个表同一个表,但我还没有找到解决问题的方法