各位,
有人可以帮我解释一下下面的查询吗?
SELECT SOME_ID ROOT_CAT,
CHILD_ID SOME_ID
FROM CHILD_TABLE
START WITH SOME_ID IN (SELECT ROOT_ID FROM ROOT_TABLE)
CONNECT BY NOCYCLE SOME_ID = PRIOR CHILD_ID;
最佳答案
这用于获取分层数据,例如父 - 子 - 子的子等。
开头
-- 这标识树中所有 LEVEL=1 节点
connect by
-- 描述如何从上面的父节点走到它们的子节点并
他们的 child 的 child 。
一般语法是
select ...
start with initial-condition
connect by nocycle
recurse-condition
connect by 构造建立了递归。通过 SOME_ID= CHILD_ID 可以找到属于下一个较低层次级别的所有记录。
CHILD_ID 是在当前层次级别中找到的值
您的查询可以类似于:
SELECT SOME_ID ROOT_CAT,
CHILD_ID SOME_ID
FROM CHILD_TABLE
START WITH SOME_ID IN (SELECT ROOT_ID FROM ROOT_TABLE)
CONNECT BY NOCYCLE SOME_ID = PRIOR CHILD_ID;
SELECT PARENT_ID CURRENT_PARENT,
CHILD_ID PARENT_ID_CURRENT_CHILD
FROM LIST_OF_CHILDREN
START WITH PARENT_ID IN ( SELECT SOME_RANDOM_PARENT_ID FROM LIST_OF_PARENTS)
CONNECT BY NOCYCLE PARENT_ID = PRIOR CHILD_ID
关于sql - 请解释一下所附的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256808/