表结构示例:
示例数据:
Oracle当中的“CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询。例如家族关系、组织管理等层次关系。
每行数据都是按层次顺序检索,并规定将表中的数据连入树形结构的关系中。
SELECT a.*,level,CONNECT_BY_ISLEAF FROM NODE_TREE a start with ID in (SELECT ID FROM NODE_TREE WHERE PARENT_ID IS NULL)
CONNECT BY prior ID = PARENT_ID
示例结果集:
其中 LEVEL 代表第几层;CONNECT_BY_ISLEAF 代表是否是子集。
start with ...connect by 的用法, start with 后面所跟的就是就是递归的种子。
递归的种子也就是递归开始的地方 connect by 后面的"prior" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;
connect by prior 后面所放的字段是有关系的,它指明了查询的方向。
根据子节点反向递归:
SELECT a.*,level,CONNECT_BY_ISLEAF FROM NODE_TREE a start with ID = 6
CONNECT BY prior PARENT_ID = ID
示例结果: