sql – 父元素的递归连接
发布时间:2020-12-12 08:51:14 所属栏目:MsSql教程 来源:网络整理
导读:我有一个看起来像这样的表: ID |Name |Parent1 |A |NULL2 |B |NULL3 |C |14 |D |15 |E |36 |F |5 我希望有一个观点回报这个: ID |Name |ParentNames1 |A |2 |B |3 |C |A4 |D |A5 |E |A C6 |F |A C E 我试图离开加入一个显示ID第一个父亲的视图,并将其与自己
我有一个看起来像这样的表:
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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |