Oracle分层查询:在结果和优化中包括以开头

Oracle分层查询:在结果和优化中包括以开头,oracle,hibernate,Oracle,Hibernate,嗨,我有下面的分层查询。我可以知道如何将start with pc.Parent=“abc”也包括在结果中吗 select pc.child from parentChild pc start with pc.Parent="abc" connect by nocycle prior pc.child = pc.parent; 我使用上面的查询更新所有的child+start和parent值 update person set ..... where person.id in (select

嗨,我有下面的分层查询。我可以知道如何将start with pc.Parent=“abc”也包括在结果中吗

select pc.child
from parentChild pc
start with pc.Parent="abc"
connect by nocycle prior pc.child = pc.parent;
我使用上面的查询更新所有的child+start和parent值

update person set ..... where person.id in (select pc.child
    from parentChild pc
    start with pc.Parent="abc"
    connect by nocycle prior pc.child = pc.parent)
我可以知道是否有更有效的方法来更新所有的孩子和他们自己吗

我正在考虑取出孩子们的列表,并使用hibernate单独更新他们


请分享您的建议:D谢谢对于第一个问题,请使用
选择pc.parent
而不是
选择pc.child
。这样,即使是父级也将包含在结果中

对于第二个问题(更新),我认为该查询没有任何问题。我正在以类似的方式使用CONNECT BY PRIOR(为in生成列表),并且从未遇到过任何问题。事实上,我从未见过任何其他方法来更新Oracle上的树层次结构

关于第一个问题的评论,(SQLDeveloper,10g):


对于第一个问题,请使用
选择pc.parent
而不是
选择pc.child
。这样,即使是父级也将包含在结果中

对于第二个问题(更新),我认为该查询没有任何问题。我正在以类似的方式使用CONNECT BY PRIOR(为in生成列表),并且从未遇到过任何问题。事实上,我从未见过任何其他方法来更新Oracle上的树层次结构

关于第一个问题的评论,(SQLDeveloper,10g):


不插入“父,空子”值的可能解决方案是使用双

select pc.child
from parentChild pc
start with pc.Parent="abc"
connect by nocycle prior pc.child = pc.parent
union
Select pc.parent from dual

不插入“父,空子”值的可能解决方案是使用双

select pc.child
from parentChild pc
start with pc.Parent="abc"
connect by nocycle prior pc.child = pc.parent
union
Select pc.parent from dual

但是不是父母的孩子,也就是没有孩子的孩子,也就是叶子,不会在名单上。不应该这样做,试过了吗?也许删除NOCYCLE,因为它无论如何都不应该循环?从逻辑上讲,它不应该工作,因为孩子可能不是父母。。示例a感谢您的努力,但我注意到了不同之处。。。插入mytree值(3,NULL);>>没有孩子的成年人不在我的列表中。但是没有父母的孩子也不在列表中。不应该这样做,试过了吗?也许删除NOCYCLE,因为它无论如何都不应该循环?从逻辑上讲,它不应该工作,因为孩子可能不是父母。。示例a感谢您的努力,但我注意到了不同之处。。。插入mytree值(3,NULL);>>没有孩子的成人不能为我插入表格。