2013-02-22 63 views
0

我有一個消息表,其中每個記錄字段有:如何從1表中選擇更新?

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 
+0

檢查這個問題的答案 - http://stackoverflow.com/questions/45494/mysql-error-1093-cant-specify-target-table-for-update從條款 – 2013-02-22 14:57:30

+0

謝謝,我會通過在這個問題中描述的醜陋的方式來做到這是一次性的工作:D,我可以使用其他方式,但使用腳本或存儲過程來做到這一點。不管怎麼說,還是要謝謝你 – Shehabix 2013-02-22 15:00:43

回答

0

這是我如何解決它:

注意:這是醜陋的表現,可以做到這一點CE但對正在進行的操作

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'