使用while条件的嵌套查询 - sql

时间:2011-05-23 16:04:35

标签: sql oracle nested

我需要在一个表上进行嵌套查询。每一行都可能是另一行的父或子。

是否可以使用单个select语句执行此操作?我开始使用这个声明,但它只下降了一个级别。

select * from myTable where parent_id in 
   (select id from myTable where name = 'manager' )

然而,这个选择只会降低一个级别。如果一行有多个孩子,他们将被忽略。 (在表格中,每一行都有 Id 字段,如果某行有父级,则父级 Id 值将位于子级的 parent_Id 字段中。)

如果我可以在SQL中包含一个while循环,它总是会检查返回的 Id 是否是父级,如果是,则检查是否有任何其他行是其子级检查其他行 parent_Id 。然而,我担心这将需要很多周期才能最终找到所有父子关系。有什么建议?感谢

使用Oracle db

1 个答案:

答案 0 :(得分:3)

我认为您正在寻找这样的分层查询:

select * from mytable
connect by prior id = parent_id
start with name = 'Manager';

(“嵌套表”完全不同。)