zoukankan      html  css  js  c++  java
  • [SQL] 生成无级树

    --处理示例

    --示例数据
    create table tb(ID int,Name varchar(10),ParentID int)
    insert tb select 1,'AAAA'    ,0
    union all select 2,'BBBB'    ,0
    union all select 3,'CCCC'    ,0
    union all select 4,'AAAA-1'  ,1
    union all select 5,'AAAA-2'  ,1
    union all select 6,'BBBB-1'  ,2
    union all select 7,'CCCC-1'  ,3
    union all select 8,'CCCC-2'  ,3
    union all select 9,'AAAA-1-1',4
    go

    --创建处理的函数
    create function f_id()
    returns @re table(id int,level int,sid varchar(8000))
    as
    begin
        
    declare @l int
        
    set @l=0
        
    insert @re select id,@l,right(10000+id,4)
        
    from tb where ParentID=0
        
    while @@rowcount>0
        
    begin
            
    set @l=@l+1
            
    insert @re select a.id,@l,b.sid+','+right(10000+a.id,4)
            
    from tb a,@re b
            
    where a.ParentID=b.id and b.level=@l-1
        
    end
        
    return
    end
    go

    --调用函数实现查询
    select a.*,带缩进的Name=space(b.level*4)+a.Name
    from tb a,f_id() b
    where a.id=b.id
    order by b.sid
    go

    --删除测试
    drop table tb
    drop function f_id
  • 相关阅读:
    【BZOJ2287】消失之物
    【NOI2001】炮兵阵地
    【SCOI2005】互不侵犯
    【USACO2007 nov glod】玉米田
    【NOIP模拟】航班
    【NOIP模拟】闲荡
    【NOIP模拟】军队调遣
    树形地铁系统
    矩阵
    完美的集合(题解)
  • 原文地址:https://www.cnblogs.com/goodspeed/p/43714.html
Copyright © 2011-2022 走看看