为了修复错误,我必须遍历表中的所有行,将缓存的子项数更新为其实际值。表中事物的结构形成一棵树。
在rails中,以下是我想要的:
Thing.all.each do |th|
Thing.connection.update(
"
UPDATE #{Thing.quoted_table_name}
SET children_count = #{th.children.count}
WHERE id = #{th.id}
"
)
end
有没有办法在单个 MySQL 查询中做到这一点?或者,有没有办法在多个查询中执行此操作,但在纯 MySQL 中?
我想要类似的东西
UPDATE table_name
SET children_count = (
SELECT COUNT(*)
FROM table_name AS tbl
WHERE tbl.parent_id = table_name.id
)
除了以上不起作用(我明白为什么不起作用)。