zoukankan      html  css  js  c++  java
  • 递归查树形结构

    --drop table tb
    --go
    --create table tb(code int,su_code int)
    --insert into tb(code,su_code) values(1,null)
    --insert into tb(code,su_code) values(11,1)
    --insert into tb(code,su_code) values(12,1)
    --insert into tb(code,su_code) values(111,11)
    --insert into tb(code,su_code) values(112,11)
    --insert into tb(code,su_code) values(121,12)
    --insert into tb(code,su_code) values(122,12)
    --insert into tb(code,su_code) values(1221,122)

    --SELECT * FROM tb
    --SELECT * FROM #stack
    --DROP TABLE #stack

    go

    --create table #stack(item int,levels int)
    --delete from #stack
    SET nocount ON
    go
    DECLARE @top INT
    DECLARE @level INT
    DECLARE @line VARCHAR(128)
    SELECT @top = code
    FROM tb
    WHERE su_code IS NULL
    INSERT INTO #stack
    VALUES ( @top, 1 )
    SELECT @level = 1
    WHILE @level > 0
    BEGIN
    IF EXISTS ( SELECT *
    FROM #stack
    WHERE levels = @level )
    BEGIN
    SELECT @top = item
    FROM #stack
    WHERE levels = @level
    SELECT @line = SPACE(@level - 1) + CONVERT(VARCHAR, @top)
    PRINT @line
    DELETE FROM #stack
    WHERE levels = @level
    AND item = @top
    INSERT INTO #stack
    SELECT code ,
    @level + 1
    FROM tb
    WHERE su_code = @top
    IF @@rowcount > 0
    SELECT @level = @level + 1
    END
    ELSE
    SELECT @level = @level - 1
    END

  • 相关阅读:
    HashMap与Hashtable的区别
    List集合、泛型、装箱拆箱
    关于集合
    统一建模语言
    自定义栈
    学习笔记
    如何优化limit
    mysql五大存储引擎
    [离散数学]2016.12.15周四作业
    [离散数学]2016.12.9周四作业
  • 原文地址:https://www.cnblogs.com/z1984/p/2948104.html
Copyright © 2011-2022 走看看