【发布时间】:2017-07-07 15:57:32
【问题描述】:
我有表objs,其中包含有关文件和目录的信息。
每条记录都有行
id, fileSize, parentID, dirSize.
每条记录(但不是第一条记录)都有parentID,它等于父目录的id。
我想递归计算每个目录的大小。
简单的解决方案,没有递归,基于文件和目录路径是
update objs set dirSize= (
select sum(b.fileSize) from objs b where b.fullPath like objs.fullPath||'\%' and b.isDir=0)
where isDir=1
我想将其重写为递归方法,但我坚持
WITH RECURSIVE
works_for_alice(n, m) AS (
select id, fileSize from objs where id=9
UNION
SELECT a.id, a.fileSize FROM objs a, works_for_alice b
WHERE a.parentID=b.n
)
SELECT sum(m) FROM works_for_alice
看不懂,怎么应用这个选择
SELECT sum(m) FROM works_for_alice
到objs表的更新以及如何更改id中的值
select id, fileSize from objs where id=**9**
在WITH中,将更新语句中更新行的id的值传递给这个选择器值...
非常感谢!
【问题讨论】: