sqlserver 正向递归,反向递归,向上递归,向下递归。树形向上递归,树形向下递归
背景:我们点击文件夹的时候,会进入到子文件夹,子文件又可以进入子文件夹,那怎么找到它的顶级父文件夹和后面的子文件夹呢
1新建一个demo
2正向递归
3 反向递归
#反向递归 找到顶级父节点的id 如当前id是4 他的顶级父节点id是1 lel是递归深度 不要运行注释
with outcome as(
select id ,preId,names,0 as lel
from parnet
where preId=3
UNION ALL
select p.id,p.preId,p.names,o.lel+1 as le
from parnet as p,outcome as o
where p.id=o.preId
)
select * from outcome order by id asc
#正向递归 找到当前节点后面所有的信息
with outcome as(
select id,preId,names,0 as lel
from parnet
where preId=1
UNION ALL
select p.id,p.preId,p.names,o.lel+1 as le
from parnet as p,outcome as o
where o.id=p.preId
)
select * from outcome order by id asc