SQL:搜索节点之子子孙孙

CREATE FUNCTION [dbo].[pyx_fn_getX] ( @id INT )
RETURNS @tbl TABLE ( ID INT, Parent INT )
AS
BEGIN
  DECLARE @tb_id TABLE ( ID INT, lvls INT )
  DECLARE @lvl INT
       
  SET @lvl = 1
  INSERT  INTO @tb_id
          SELECT  @id,
                  @lvl

  WHILE EXISTS ( SELECT TOP 1
                        projectID
                 FROM   HDSSortproject
                 WHERE  Parent_projectID IN ( SELECT  ID
                                              FROM    @tb_id
                                              WHERE   lvls = @lvl ) )
    BEGIN
      SET @lvl = @lvl + 1
      INSERT  INTO @tb_id
              SELECT  projectID,
                      @lvl
              FROM    HDSSortproject
              WHERE   Parent_projectID IN ( SELECT  ID
                                            FROM    @tb_id
                                            WHERE   lvls = @lvl - 1 )
    END

  INSERT  INTO @tbl
          SELECT  projectID,
                  Parent_projectID
          FROM    HDSSortproject
          WHERE   projectID IN ( SELECT id
                                 FROM   @tb_id )
  RETURN
END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值