数据库查询有时候会根据上下级的关系进行查找,比如组织架构中有上下级关系,查找某人最顶级的上级,或者所有的上级,或者所有的下属,此时就可以用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条件的