Pab*_*tyk 24 sql database sql-server recursion
假设我有下表:
CustomerID ParentID Name
========== ======== ====
1 null John
2 1 James
3 2 Jenna
4 3 Jennifer
5 3 Peter
6 5 Alice
7 5 Steve
8 1 Larry
Run Code Online (Sandbox Code Playgroud)
我想在一个查询中检索James的所有后代(Jenna,Jennifer,Peter,Alice,Steve).谢谢,巴勃罗.
mat*_*ieu 34
在SQL Server 2005上,您可以使用CTE(公用表表达式):
with Hierachy(CustomerID, ParentID, Name, Level)
as
(
select CustomerID, ParentID, Name, 0 as Level
from Customers c
where c.CustomerID = 2 -- insert parameter here
union all
select c.CustomerID, c.ParentID, c.Name, ch.Level + 1
from Customers c
inner join Hierachy ch
on c.ParentId = ch.CustomerID
)
select CustomerID, ParentID, Name
from Hierachy
where Level > 0
Run Code Online (Sandbox Code Playgroud)