---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

 

 

相关文章: