我有一张这样的表:
[Mappings]
Parent | Child
---------------
4 | 10
1 | 4
在SQL中,我尝试使用10
的输入运行查询,然后将其所有父项取回链... ... 4
和{{1}在这种情况下。
如果我使用1
的输入执行此操作,则会返回4
。
我认为我需要使用公用表表达式(CTE),但语法却让我失望。
答案 0 :(得分:1)
我怀疑你使用sql server,如果是的话,你需要这样的东西:
create table #test(
Parent int,
Child int
);
insert into #test
values
(4 , 10),
(1 , 4),
(10 , 12);
with rec as (
select #test.*, 1 as lvl from #test where Child = 10
union all
select #test.*, lvl + 1 as lvl from #test
inner join rec
on #test.Child = rec.Parent
)
select parent, lvl from rec
OPTION (MAXRECURSION 0)
也可能看到级别列(在这种情况下为lvl
)