种子查询是否应始终在层次查询中返回1行?

时间:2015-05-30 08:25:32

标签: sql

我正在尝试学习层次查询,所以我在第一个查询中需要初始化种子值的第一个语法。我的问题是,初始种子查询应该只返回一个值吗?或多个值?

说我是否需要为多个组执行递归

1 个答案:

答案 0 :(得分:1)

它可以返回多个值 - 种子查询中的所有行都用作下一个递归的输入集。

例如,使用此架构

create table T1 (
  p int,
  c int
)

insert into T1 (p, c) values (0, 1)
insert into T1 (p, c) values (1, 2)
insert into T1 (p, c) values (2, 3)
insert into T1 (p, c) values (10, 11)
insert into T1 (p, c) values (11, 12)
insert into T1 (p, c) values (11, 13)

这个递归查询

WITH cte (p, c) as
(
  select p, c from T1 where p = 0 or p = 10
  union all
  select T1.p, T1.c from T1
  inner join cte on T1.p = cte.c
 )
 select * from cte

请注意,基数返回2行,您可以从那里获得2个分支(您的多个组)。