递归查询中的递归查询

时间:2019-09-16 21:15:13

标签: sql postgresql

我想解决一个包含2个递归的问题。 在这两个递归之一中,我找到了一个问题的答案,即“特定输入(模板)的叶成员是什么?”这已经解决了。

在第二次递归中,我想针对许多其他输入(模板)运行此查询。

问题的第一部分:

我有一棵树,想找到它的叶子。可以使用以下查询解决递归的这一部分:

with recursive full_tree as (
  select id, "previousVersionId", 1 as level
    from template
  where
    template."id" = '5084520a-bb07-49e8-b111-3ea8182dc99f'
  union all 
    select c.id, c."previousVersionId", p.level + 1
    from template c
    inner join full_tree p on c."previousVersionId" = p.id
)
select * from full_tree
order by level desc
limit 1

查询输出是一条记录,其中包括我感兴趣的叶子ID。这很好。

查询的第二部分:

这是问题所在。我想运行第一个查询n次。 目前,我只能在仅一个ID的情况下运行查询(示例中为“ 5084520a-bb07-49e8-b111-3ea8182dc99f”)。但是,如果我有100个此类ID的列表,该怎么办。 我的最终目标是对列表中的100个模板ID分别获得一个ID响应(叶ID)。 从理论上讲,一个查询使我可以对每个查询(例如100个模板ID可以解决我的问题。

0 个答案:

没有答案