mysql更新列,其值来自select case

时间:2018-05-18 00:22:01

标签: mysql

我有一个像这样的类别表

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中,无法通过子查询更新一个表同一个表,但我还没有找到解决问题的方法

0 个答案:

没有答案