ID,PID树状表的路径查询

本文介绍了一种使用SQL的通用表表达式(CTE)来查询产品树结构的方法,包括获取指定节点的所有下级和上级节点,并展示了如何通过更新CTE来调整节点层级。


---ID,PID的产品树 car

ID      PID     Name                 Level

1        -1      车身                    0
2         1      行李箱盖               1
3         1      引擎盖                  1
4         1      门                        1
5         4      把手                     2
6         4      窗                        2
7         1      铆钉                     1
8         4      铆钉                     2
9         6      玻璃                     3
11       6      Aa                       3
12      11     bb                       4

 

---所有下级节点
with cte as
(
select * from car where id=6
union all
select c.* from car c join cte e on c.pid=e.id
)

select * from cte order by level

6      4       窗                 2
9      6      玻璃               3
11    6      Aa                 3
12   11     bb                 4

---所有上级节点
with cte as
(
select * from car where id=6
union all
select c.* from car c join cte e on c.id=e.pid
)

select * from cte order by level

1       -1       车身                  0
4        1        门                    1
6        4        窗                    2


----移动的情况,所有下级节点

update cte

set
  level=level+ n

 

 

转载于:https://www.cnblogs.com/ugvanxk/archive/2009/04/07/1430769.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值