0

我有一个新闻表,其中每条记录都有字段:

news_id (INT), parent_id (INT) , subitems (INT)

我希望每条记录都带有它的直接子项的总数(计数)

例如(我希望结果是这样的)

news_id: 1, parent_id: 0, subitems: 2

news_id: 2, parent_id: 1 , subitems: 0

news_id: 3, parent_id: 1 , subitems: 0

我该如何正确地做这样的事情:

UPDATE news n 
SET subitems = (SELECT COUNT(*) FROM `news` AS `n2` 
WHERE `n2`.`parent_id` = `n`.`news_id`)

由于上面给出了以下错误:

#1093 - You can't specify target table 'n' for update in FROM clause
4

1 回答 1

0

这就是我解决它的方法:

注意:这对于性能来说是丑陋的,可以只做一次,但不能用于正在进行的操作

UPDATE news n 
SET subitems = (SELECT COUNT(*) 
FROM (SELECT parent_id FROM `news` AS `n2` 
WHERE `n2`.`parent_id` <> '0') AS n3 WHERE n3.parent_id = n.news_id)
WHERE n.parent_id = '0'
于 2013-02-22T15:05:32.483 回答