我需要在一个表上进行嵌套查询。每一行都可能是另一行的父或子。
是否可以使用单个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
答案 0 :(得分:3)
我认为您正在寻找这样的分层查询:
select * from mytable
connect by prior id = parent_id
start with name = 'Manager';
(“嵌套表”完全不同。)