当前位置:  开发笔记 > 数据库 > 正文

如何在MSSQL 2005中创建递归查询?

如何解决《如何在MSSQL2005中创建递归查询?》经验,为你挑选了1个好方法。

假设我有下表:

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 

我想在一个查询中检索James的所有后代(Jenna,Jennifer,Peter,Alice,Steve).谢谢,巴勃罗.



1> mathieu..:

在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

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有