Oracle中的递归查询语句为start with .... connect by prior,为中序遍历算法。
基本语法是:
select * from tablename
start with 条件1
connect by 条件2
where 条件3
- 条件1: 是根结点的限定语句,当然可以放宽限定条件,以遍历多个根结点,实际就是多棵树。
- 条件2:是连接条件,其中用PRIOR表示上一条记录。
比如connect by prior id = parent_id就是说上一条记录的Id 是本条记录的Parent_Id。 - 条件3:过滤返回的结果集。
PRIOR关键字
运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。
- PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,为自顶向下查找。
如:connect by prior id = parent_id - PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,为自底向上的查找。
如:connect by id = prior parent_id
PS:当CONNECT BY后指定多个连接条件时,每个条件都应指定prior关键字