科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道数据表中遍历寻找子节点的三种实现方法

数据表中遍历寻找子节点的三种实现方法

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文将为大家介绍数据表中遍历寻找子节点的三种实现方法。

作者:赛迪网 37591 来源:天新网 2008年3月24日

关键字: SQL Server SQL Mssql 数据库

  • 评论
  • 分享微博
  • 分享邮件

实现方法二:

代码如下:

Create Table #AllRow 
( 
    Id  Int,  
    ParentId Int 
)  

Declare @Id Int 
Set @Id = 1        ---在次修改父节点 

Delete #AllRow 

--顶层自身 
Insert Into #AllRow (Id,ParentId) Select @Id,  @Id 

While @@RowCount > 0 
Begin 
Insert Into #AllRow (Id,ParentId) 
Select B.Id,A.Id 
From #AllRow A,DbTree B 
Where A.Id = B.ParentId And 
Not Exists (Select Id From #AllRow Where Id = B.Id And ParentId = A.Id) 
End  

Delete From #AllRow Where Id = @Id 
Select * From #AllRow Order By Id 
Drop Table #AllRow

实现方法三:

代码如下:

在SQL Server2005中其实提供了CTE[公共表表达式]来实现递归: 
关于CTE的使用请查MSDN 
Declare @Id Int 
Set @Id = 3;    ---在次修改父节点 

With RootNodeCTE(Id,ParentId) 
As 
( 
Select Id,ParentId From DbTree Where ParentId In (@Id) 
Union All 
Select DbTree.Id,DbTree.ParentId From RootNodeCTE 
Inner Join DbTree 
On RootNodeCTE.Id = DbTree.ParentId 
) 

Select * From RootNodeCTE
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章