SQL如何获取父代及其所有子代以及子代的子代...等

问题描述

我必须看到我是sql的新手。

我有一个看起来像这样的表:

child      parent
-------------------
Nancy      Bob
Oli        Bob
Alice      Oli
Mira      Alice

现在,我需要一条sql语句,该语句赋予我parent-已经为人所知-及其子代及其子代的子代...等等,给定的是父代名称。

示例我需要Bob系列。 sql应该返回(Bob,Nancy,Oli,Alice,Mira)

我尝试过:select child from myTable where parent='Bob'这给了我南希和奥利。

有什么想法吗?

解决方法

您可以使用Oracle的层次查询将其与树级别一起使用:

Demo

SELECT CHILD,LEVEL FROM TABLE1
START WITH PARENT = 'Bob'
connect by prior child = parent;
,

这是典型的分层查询。一种标准方法使用递归with子句:

with cte (child,parent) as (
    select child,parent from mytable where parent = 'Bob'
    union all
    select t.child,t.parent
    from mytable t
    inner join cte c on c.child = t.parent
)
select child from cte

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...