gpt4 book ai didi

oracle分层查询nocycle并按root连接

转载 作者:行者123 更新时间:2023-12-02 07:09:57 32 4
gpt4 key购买 nike

有人可以解释一下在oracle中的分层查询中nocycle和connect by root子句的使用吗,还有当我们不使用“开始于”时我们获取行的顺序是什么,我的意思是当我们不使用“开始于”时我们得到很多行,任何人都可以解释 nocycle 并使用简单的 emp 表通过 root 连接(与开始有何不同?),感谢您的帮助

最佳答案

如果您的数据中有循环(A -> B -> A -> B ...),Oracle 将抛出异常,ORA-01436:用户数据中的 CONNECT BY 循环如果您进行分层查询。 NOCYCLE 指示 Oracle 返回行,即使存在这样的循环。

CONNECT_BY_ROOT 使您可以访问根元素,甚至可以访问查询中的几层。使用 HR 模式:

select level, employee_id, last_name, manager_id ,
connect_by_root employee_id as root_id
from employees
connect by prior employee_id = manager_id
start with employee_id = 100

LEVEL EMPLOYEE_ID LAST_NAME MANAGER_ID ROOT_ID
---------- ----------- ------------------------- ---------- ----------
1 100 King 100
2 101 Kochhar 100 100
3 108 Greenberg 101 100
4 109 Faviet 108 100
...

在这里,您会看到我从员工 100 开始,开始查找他的员工。 CONNECT_BY_ROOT 运算符使我能够访问 King 的 employee_id,甚至可以访问下四层。起初我对这个运算符感到非常困惑,认为它意味着“通过根元素连接”之类的东西。可以将其想象为“CONNECT BY 子句的根”。

关于oracle分层查询nocycle并按root连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448694/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com