oracle 使用 connect by prior 对树形表结构进行递归查询
onnect by prior start with 经常会被用到一个表中存在递归关系的时候。例如,我们经常会将一个目录树存储到一个表中。表结构及数据如下:
ALI_CATEGORY(ID, CATEGORY_NAME, PARENT_ID, IS_LEAF)
1 、根据一个子节点的 id (例如 id=6 ),获取从该子节点到该子节点对应的根节点这一路径上的所有节点记录(包括该子节点):
select * from ali_category a
CONNECT BY PRIOR a. parent_id= a. id START WITH a. id = 6
结果如下:
2 、根据一个节点的 id (例如 id=1 ),获取该节点下的所有子树的所有节点记录(不包括该子节点):
select * from ali_category a
CONNECT BY PRIOR a. id = a. parent_id START WITH a. parent_id = 1
结果如下: