通过SQL中的映射进行递归

时间:2017-06-01 15:43:44

标签: sql hierarchical-data recursive-query

我有一张这样的表:

[Mappings]

Parent | Child
---------------
   4   |   10
   1   |   4

在SQL中,我尝试使用10的输入运行查询,然后将其所有父项取回链... ... 4和{{1}在这种情况下。

如果我使用1的输入执行此操作,则会返回4

我认为我需要使用公用表表达式(CTE),但语法却让我失望。

1 个答案:

答案 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