zoukankan      html  css  js  c++  java
  • sql 递归

    递归速度较慢,建议建立索引,如下:

    Create index 索引名【表名_字段名】on 表名(字段1,字段2...)

    Drop index 表名.索引名

    --根据子节点,得到父节点
    CREATE PROCEDURE ProcGetRootID
        @PatentID bigInt
    AS
    DECLARE @ID bigInt
    BEGIN
        CREATE TABLE #TEMP(PatentID bigInt,ID bigInt)
        WHILE 1 = 1
        BEGIN
            SELECT @ID = ID FROM Table WHERE @PatentID = PatentID
               IF @ID = 0 --结束条件,根据自己的业务写
               BEGIN 
                   INSERT INTO #TEMP VALUES (@PatentID,@ID)
                   BREAK;
               END
            SET  @PatentID = @ID
        END
        SELECT PatentID,ID FROM #TEMP
    END


    /***
    获取父节点下的所有子节点
    父ID:@FormCode
    子ID:OrigOrder
    注意:这个数据量大的时候更慢,建立索引为上策

    根据根订单Id获得所有有售后服务的订单id,即此订单有受理单
    */
    ALTER  PROCEDURE [dbo].[ProcGetAllFormCode]
     @FormCode bigInt
    AS
    BEGIN

     With RootNodeCTE(FormCode,OrigOrder)   
     As   
     (   
     Select FormCode,OrigOrder From OrderForm Where OrigOrder In (@FormCode)   
     Union All   
     Select OrderForm.FormCode,OrderForm.OrigOrder From RootNodeCTE   
     Inner Join OrderForm  
     On RootNodeCTE.FormCode = OrderForm.OrigOrder   
     )
     --把根节点包含进来
     SELECT FormCode,OrigOrder  FROM OrderForm WHERE FormCode=@FormCode
     UNION ALL
     Select * From RootNodeCTE 
    END

     调用方法

    ProcGetAllFormCode 参数

    如下 ProcGetAllFormCode 112587869

  • 相关阅读:
    HTTP协议简介
    Web开发中B/S架构和C/S架构的区别
    软件测试作业三
    Java8 时间处理
    Java EE
    Java 中的 I/O 抽象
    Python 高级 I/O 多路复用
    SQL 与关系代数
    Python 协程与事件循环
    Java SE 5.0
  • 原文地址:https://www.cnblogs.com/puke/p/1991249.html
Copyright © 2011-2022 走看看