Oracle中进行层级查询的方式——start with...connect by

  数据库查询有时候会根据上下级的关系进行查找,比如组织架构中有上下级关系,查找某人最顶级的上级,或者所有的上级,或者所有的下属,此时就可以用start with...connect by语句进行处理

  比如,在hrmresource中每个人id有对应的上级managerid,最上层的人员managerid为0,那么就可以进行如下查找:

--查找人员id为1018的最上级
select id from hrmresource where managerid = 0 start with id = 1018 connect by prior managerid = id

--查找人员id为1018的所有上级
select id from hrmresource start with id = 1018 connect by prior managerid = id

--查找人员id为1018的所有下级
select id from hrmresource start with id = 1018 connect by prior id = managerid

  注意:1、可以出现where条件

     2、prior的位置,在哪个字段的前面,就是顺着哪个字段的方向进行查找

       3、start with 后面的条件是可以用in条件的

原文地址:https://www.cnblogs.com/interesting-whh/p/11090965.html