若将一个树状结构存储在一张表里,需要在表中存入两个字段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 表示上一条记录)