zoukankan      html  css  js  c++  java
  • 关于TSQL递归查询的(转)

    提问:

    id mc parent
    1 机械 -1
    2 化工机械 1
    3 反应器 2

    相得到   
    id mc parent rj
    1 机械 -1 机械
    2 化工机械 1 机械\化工机械
    3 反应器 2 机械\化工机械反应器


    关键是树结构的层次不确定,不知道有多少级

    解答:

    use InsideTSQL2008;
    go

    if OBJECT_ID('dbo.Test_tab') is not null
    drop table dbo.Test_tab;
    create table dbo.Test_tab
    (
    id
    int primary key,
    mc
    nvarchar(100) not null,
    parentid
    int not null
    );

    insert into dbo.Test_tab(id,mc,parentid)values(1,'机械',0);
    insert into dbo.Test_tab(id,mc,parentid)values(2,'化工机械',1);
    insert into dbo.Test_tab(id,mc,parentid)values(3,'反应器',2);
    insert into dbo.Test_tab(id,mc,parentid)values(4,'化工反应器',3);
    insert into dbo.Test_tab(id,mc,parentid)values(5,'石油化工反应器',4);
    insert into dbo.Test_tab(id,mc,parentid)values(6,'采油机械',1);
    insert into dbo.Test_tab(id,mc,parentid)values(7,'',2);

    with cte as
    (
    select t.id,t.parentid,0 as levels,CONVERT(nvarchar(1000),t.mc) as mc from dbo.Test_tab as t
    where t.id = 1
    union all
    select ttt.id,ttt.parentid,tt.levels+1,convert(nvarchar(1000),tt.mc+'\'+ttt.mc) from cte as tt
    inner join dbo.Test_tab ttt on ttt.parentid = tt.id
    )
    select * from cte
     
    -------长沙程序员技术交流QQ群:428755207-------
  • 相关阅读:
    Flask 随记
    Notes on Sublime and Cmder
    Algorithms: Design and Analysis Note
    LeetCode 215 : Kth Largest Element in an Array
    LeetCode 229 : Majority Element II
    LeetCode 169 : Majority Element
    LeetCode 2:Add Two Numbers
    LeetCode 1:Two Sum
    Process and Kernel
    安装好scala后出现“找不到或无法加载主类”的问题
  • 原文地址:https://www.cnblogs.com/qq4004229/p/2032042.html
Copyright © 2011-2022 走看看