Oracle表中实现递归查询树形结构

时间:2022-09-19 10:20:59

若将一个树状结构存储在一张表里,需要在表中存入两个字段ID和PARENTID,表示每一条记录的parent是谁。

table: treeTable

ID PARENTID 字段3 ……
1 null a ……
2 1 b ……
3 2 d ……

Oracle中可以使用SELECT ……FROM……START WITH(开始的节点)……CONNECT BY ……PRIOR(表示上一条记录)…… (ORDER SIBLINGS BY LEVELS)子句实现递归查询树形结构。

1.从根节点遍历子节点.:(一整棵树)

select * from treeTable start with id=1 connect by prior id=parentid (prior 表示上一条记录)

2.从一个叶子追溯到根节点:(树的一枝)

select * from treeTable start with id=3 connect by prior parentid=id (prior 表示上一条记录)

3.可通过level 关键字查询所在层次.

select *,level from treeTable start with id=1 connect by prior id=parentid (prior 表示上一条记录)