oracle中关于start with … connect by prior …的解释及实现原理...
发布网友
发布时间:2022-04-25 15:13
我来回答
共1个回答
热心网友
时间:2022-04-08 23:11
这是oracle中的树查询,查询出来的数据会根据上下级组成树的结构。
select *
from mw_sys.mwt_pd_deps
start with obj_id = '63EBEC8E-E766-40D7-ACF4-FEA945102112-00042'
connect by prior obj_id = sjbm
这个是从 obj_id这个节点的数据开始 查询他及下面的子数据,这是正树。
select *
from mw_sys.mwt_pd_deps
start with obj_id = '63EBEC8E-E766-40D7-ACF4-FEA945102112-00042'
connect by prior sjbm = obj_id
这个是从obj_id这个节点的数据开始 查询他及上面的父数据,这是正树。
CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH 子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。
注意:无论正树还是倒树, 关键就在于connect by的条件.
正树: 必须是 ‘父’= prior ‘子’
倒树: 必须是 ‘子’= prior ‘父’