如何查找链接数据?

时间:2017-04-22 18:28:49

标签: sql hierarchical-data recursive-query

我有一张桌子。

chained_schedule

chained_id  parent_schedule_id  next_schedule_id
  1               71                    72
  2               72                    73   
  3               74                    75

当我输入parent_schedule_id=71时,输出应该找到该特定记录和由其next_schedule_id标识的记录,它再次链接到另一个记录,......等。

因此对于上述数据和查询,输出应如下所示:

chained_id  parent_schedule_id  next_schedule_id
  1               71                    72
  2               72                    73   

我该怎么做?

1 个答案:

答案 0 :(得分:1)

大多数数据库都支持某种形式的递归CTE。 ANSI语法是:

with recursive cte as (
      select cs.*
      from chained_schedule cs
      where parent_schedule_id = 71
      union all
      select cs.*
      from chained_schedule cs join
           cte 
           on cte.next_schedule_id = cs.parent_schedule_id
    )
select *
from cte;