sql – 父元素的递归连接
发布时间:2020-05-23 07:13:12 所属栏目:MsSql 来源:互联网
导读:我有一个看起来像这样的表: ID |Name |Parent1 |A |NULL2 |B |NULL3 |C |14 |D |15 |E |36 |F |5 我希望有一个观点回报这个: ID |Name |ParentNames
|
我有一个看起来像这样的表: ID |Name |Parent 1 |A |NULL 2 |B |NULL 3 |C |1 4 |D |1 5 |E |3 6 |F |5 我希望有一个观点回报这个: ID |Name |ParentNames 1 |A | 2 |B | 3 |C |A 4 |D |A 5 |E |A > C 6 |F |A > C > E 我试图离开加入一个显示ID第一个父亲的视图,并将其与自己连接,但这不起作用. 有没有办法在没有存储过程/函数的情况下执行此操作?我有~15k行,每个~0-5个父母,但我宁愿不硬编码最多5个父母. 解决方法你可以使用 recursive CTE.declare @T table(ID int,Name char(1),Parent int);
insert into @T values
(1,'A',NULL),(2,'B',(3,'C',1),(4,'D',(5,'E',3),(6,'F',5);
with C as
(
select ID,Name,Parent,cast('' as varchar(max)) as ParentNames
from @T
where parent is null
union all
select T.ID,T.Name,T.Parent,C.ParentNames + ' > ' + C.Name
from @T as T
inner join C
on C.ID = T.Parent
)
select ID,stuff(ParentNames,1,3,'') as ParentNames
from C; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
