gpt4 book ai didi

sql - Oracle SQL 循环自连接

转载 作者:行者123 更新时间:2023-12-04 01:31:09 28 4
gpt4 key购买 nike

上下文:
假设我有一个表有一个引用它自己的 PRIMARY KEY 的 FOREIGN KEY,如下所示:

|---------------------|------------------|------------------|
| ID | NAME | PARENT_ID |
|---------------------|------------------|------------------|
| 01 | John | 04 |
|---------------------|------------------|------------------|
| 02 | Paul | 01 |
|---------------------|------------------|------------------|
| 03 | George | 02 |
|---------------------|------------------|------------------|
| 04 | Ringo | 03 |
|---------------------|------------------|------------------|


问题:
因此,如您所见,存在循环层次结构:Ringo->George->Paul->John->Ringo->George->Paul->John->etc.

问题:
有没有SQL select可以检测到这种循环?

我知道我可以编写递归 PL/SQL 过程,但我更喜欢使用“纯”SQL 的解决方案。

提前致谢

最佳答案

您可以使用带有 CONNECT_BY_ISCYCLE 伪列的 CONNECT BY 查询来查找循环 - 请参阅 example from Oracle docs :

SELECT last_name "Employee", CONNECT_BY_ISCYCLE "Cycle"
FROM employees
WHERE level <= 3
AND department_id = 80
START WITH last_name = 'King'
CONNECT BY NOCYCLE PRIOR employee_id = manager_id;

关于sql - Oracle SQL 循环自连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61008699/

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