表INDICATIONSYSTEM

表中对应关系的字段为ID,PID
表中包含5个level,其中PID为0为level1,
PID为0,对应ID值为1,2,3,即PID为1,2,3时,为level2
为简化理解,以PID为1举例
PID为1,对应的ID值为4,5,6,7,8,即,PID为4,5,6,7,8时,为level3,
为简化理解,以PID为4举例
PID为4,对应的ID值为9,10,11,12,即,PID为9,10,11,12时,为level4
为简化理解,以PID为9举例
PID为9,对应的ID 值为23,24,25,为最后一层,level5

SELECT
ID as INDICATIONSYSTEMID,NAME as INDICATIONSYSTEMNAME,PID
FROM INDICATIONSYSTEM
START WITH PID = 1
CONNECT BY PRIOR ID = PID
ORDER BY LEVEL
结果:

1.PRIOR
阶层查询的CONNECY BY condition的条件式需要用到PRIOR来指定父节点
2.CONNECT BY
通过CONNECT BY子句定义子节点和父节点的关系,本例中PID为父节点,ID为子节点
3.start with
通过start with 指定根节点(不指定start with会出现重复记,不指定NOCYCLE没事)
4.LEVEL
通过LEVEL虚拟列表示节点的关系
5.order SIBLINGS BY id :按id进行排序
注意:此关系中PID为父节点,ID为子节点,PID从1开始,向下查询
如果将ID与PID调换位置,PID为子节点,ID为父节点
PID从1开始,向上查询

where关键字
如果查询需要添加where所限定的条件,将where放在“from 表名”后,“start with”前
即:
SELECT
ID as INDICATIONSYSTEMID,NAME as INDICATIONSYSTEMNAME,PID
FROM INDICATIONSYSTEM
WHERE PID <= 4
START WITH PID = 1
CONNECT BY PRIOR ID = PID
ORDER BY LEVEL

如果将where语句放在最后将无法正确结束命令

本文详细解析了在数据库中使用CONNECT BY进行层级查询的方法,包括如何通过START WITH和PRIOR关键字设置查询起点和父子节点关系,以及如何利用LEVEL虚拟列标识节点层级。并通过具体示例展示了查询过程及注意事项。
2547

被折叠的 条评论
为什么被折叠?



