我需要对单个表执行嵌套查询。每行都可能是另一行的父项或子项。
是否可以使用单个 select 语句来完成此操作?我开始使用这个语句,但它只下降了一个级别。
select * from myTable where parent_id in
(select id from myTable where name = 'manager' )
然而,这个选择只会下降一级。如果一行有多个 child ,他们将被忽略。 (在表格中,每一行都有一个 Id 字段,如果一行有父项,那么父项的 Id 值将在子项的 parent_Id 字段中.)
如果我可以在 SQL 中包含一个 while 循环,它将始终检查返回的 Id 是否是父行,以及是否检查并查看是否有任何其他行是它的子行检查其他行 parent_Id。但是我担心这会花费很多周期才能最终找到所有父子关系。有什么建议么?谢谢
使用 Oracle 数据库
最佳答案
我认为您正在寻找这样的分层查询:
select * from mytable
connect by prior id = parent_id
start with name = 'Manager';
(“嵌套表”完全是另一回事。)
关于sql - 使用 while 条件的嵌套查询 - sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6099826/