日期:2014-05-16  浏览次数:20484 次

connect by的使用

测试数据使用hr方案中的employees表,没有的参考附件:

?

??? 查询本节点的下级节点:

select t.*,level from employees t
connect by prior employee_id=manager_id
start with employee_id='100' ;

使用说明:?

?? start with指示开始节点是哪个节点,employee_id是主键,表示唯一,一般从特定节点开始。如果使用manager_id标识开始节点,可能会从多个节点开始,会形成多颗树。

??? connect by标识连接关系。prior放到标识上级节点的字段旁,标识查上级节点;放到标识子节点的字段旁,标识查下级节点。prior代表递归查询,如果没有prior,只返回满足start with条件的值。

??? level是动态数据,是在形成树的过程,标识出是第几级的产生的。

?

附:使用connect by也可以产生重复数据如下:

select * from dual connect by level <=1000;

将产生1000条X