【发布时间】:2020-04-03 19:15:36
【问题描述】:
上下文:
假设我有一个表,它有一个引用它自己的 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 的解决方案。
提前谢谢你
【问题讨论】:
-
带有循环检测的递归 cte/with?
-
这是一个常见问题解答。 (显然。)在考虑发布之前,请阅读手册和谷歌任何错误消息或您的问题/问题/目标的许多清晰、简洁和精确的措辞,有和没有您的特定字符串/名称和站点:stackoverflow.com 和标签;阅读许多答案。如果您发布问题,请使用一个短语作为标题。反映你的研究。请参阅How to Ask 和投票箭头鼠标悬停文本。
标签: sql oracle optimization recursive-query self-join