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-------
  • 相关阅读:
    最长公共子序列(LCS)
    数组分割问题
    Trie树
    BitMap(比特位)
    KMP算法——字符串匹配
    排序算法
    概率问题
    【设计模式】——访问者模式
    【设计模式】——解释器模式
    【设计模式】——享元模式
  • 原文地址:https://www.cnblogs.com/qq4004229/p/2032042.html
Copyright © 2011-2022 走看看