sql - 请解释一下所附的查询

标签 sql oracle oracle11g oracle-sqldeveloper plsqldeveloper

各位,

有人可以帮我解释一下下面的查询吗?

 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/

相关文章:

sql - 在sql server中使用OpenJson()序列化反序列化的对象

sql - 撤消从 WWV_FLOW_FILES 中删除

mysql - 避免查询中出现重复并将所有重复行设为空白

sql - 尝试使用循环将多个值存储到变量中,并使用该特定变量进行插入

Oracle 11 g 表图

sql - Postgres 9.x - 有没有办法避免将数据库连接信息硬编码到 View 中?

MySQL 在单个查询中获取 COUNT 和 SUM

sql - DB2 多列的唯一约束

sql - 使用 substr 和 instr 更新分隔字符串

java - 4 小时后不应访问 Otp