1
我有表objs
,其中包含有关文件和目录的信息。 每个记录有记录的行SQLite的递归更新
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
我想将它改写为递归方法,但我stucked上
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
表和如何在WITH
改变ID的值在
select id, fileSize from objs where id=**9**
,传递到UPDATE语句更新行的id的这个选择值...
非常感谢您!
'works_for_alice'是*不*一个SQL关键字,你将不得不采取不变,'N' /'我也不是很好的名字。 –
我知道,它只是实验性的代码片段,它在深夜3小时内被复制粘贴并重新写入:)... –