从同一个表更新计数

时间:2014-05-15 12:35:47

标签: mysql

我有一个表table_1,其列为parent_id,其列值来自同一个表中的其他记录。 我想设置另一列out_degree,其中包含将此表的id作为其parent_id的记录数。 我试过这个:

UPDATE table_1 p1
   SET p1.out_degree = ( SELECT COUNT(*)
                           FROM table_1 p2, 
                                table_1 p1
                          WHERE p2.parent_id = p1.id 
                       GROUP_BY p1.id
                       )

但它没有用。任何想法?

1 个答案:

答案 0 :(得分:1)

试试这个:

UPDATE table_1 T1 
  JOIN ( SELECT parent_id,Count(parent_id) as ParentCount
           FROM table_1
       GROUP BY parent_id
       ) T2 ON T1.parent_id=T2.parent_id
   SET T1.out_degree=T2.parentCount

请参阅SQL Fiddle中的示例结果。