常用的sql递归查询

Oracle 递归查询

Oracle中的递归查询语句为start with…connect by prior,为中序遍历算法。
可参考Oracle 树操作、递归查询(select…start with…connect by…prior)了解更多。

查询顺序

其基本语法是:

select colname 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关键字

 

举个例子(常用的是自顶向下查询):

SELECT t.organization_id,
t.name
FROM ehrbase_organization_all t
connect BY prior t.organization_id = t.organization_id_parent
START WITH t.organization_id = '98325'

 

mysql 的见   https://www.cnblogs.com/rainydayfmb/p/8028868.html

posted @ 2019-02-25 16:23  SKYisLimit  阅读(171)  评论(0)    收藏  举报