加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

t-sql递归查询

发布时间:2020-12-12 07:08:34 所属栏目:MsSql教程 来源:网络整理
导读:基于现有的表,我使用CTE递归查询来得出以下数据.但未能进一步应用它. 数据如下 id name parentid--------------------------1 project 02 structure 13 path_1 24 path_2 25 path_3 26 path_4 37 path_5 48 path_6 5 我想以递归方式从上面的数据中形成完整路
基于现有的表,我使用CTE递归查询来得出以下数据.但未能进一步应用它.

数据如下

id    name     parentid
--------------------------
1     project   0
2     structure 1
3     path_1    2
4     path_2    2
5     path_3    2
6     path_4    3
7     path_5    4
8     path_6    5

我想以递归方式从上面的数据中形成完整路径.表示递归将提供以下输出.

FullPaths
-------------
Project
ProjectStructure
ProjectStructurePath_1
ProjectStructurePath_2
ProjectStructurePath_3
ProjectStructurePath_1path_4
ProjectStructurePath_2path_5
ProjectStructurePath_3path_6

谢谢

解决方法

这是一个CTE的例子:
declare @t table (id int,name varchar(max),parentid int)

insert into @t select 1,'project',0
union all select 2,'structure',1
union all select 3,'path_1',2
union all select 4,'path_2',2
union all select 5,'path_3',2
union all select 6,'path_4',3
union all select 7,'path_5',4
union all select 8,'path_6',5

; with CteAlias as (
    select id,name,parentid
    from @t t
    where t.parentid = 0
    union all
    select t.id,parent.name + '' + t.name,t.parentid
    from @t t
    inner join CteAlias parent on t.parentid = parent.id
)
select * 
from CteAlias

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读