Oracle数据库层级遍历查询功能的如何实现

再看那柔弱的柳树吧,在寒冬余威尚盛时节,就早早苏醒过来,望着冰冻的河面,迎着凛冽的寒风,它微微察觉出一丝春意,于是,不顾一切地率先吐翠,淡淡地披起娇黄嫩绿的新装。沿河望去,枝梢间烟纱雾彀,一片生机,这情景仿佛一首动人的歌,一首热烈向往春天的歌,一首报告春的信息的歌,一首表达美好信念的歌。我在想:既然迎春花被人称作报春花,那么,柳树可不可以叫作报春树呢春来了,万千柳枝在春风中袅袅舞动。柳树是热爱春天的,春天也是热爱柳树的。

1. 树形结构存储表

首先创建一张用于测试的表,表明为 TREE,表中有3个字段,分别是,ID,NANE,UP_ID。UP_ID 是 ID 的上层,主要实现树形结构的存储。

CREATE TABLE TREE(
    ID INTEGER
    ,NAME VARCHAR2(30)
    ,UP_ID INTEGER
);

1.1 初始化测试数据

1.1.1 写入数据

insert into tree values(1,'一',8);
insert into tree values(2,'二',1);
insert into tree values(3,'三',2);
insert into tree values(4,'四',6);
insert into tree values(5,'五',2);

1.1.2 树形结构如下图

  • root(8)
    • 一(1)
      • 二(2)
        • 三(3)
        • 五(5)
  • root(6)
    • 四(4)

2. 树形结构遍历查询

2.1 从父节点遍历

select
    id
    ,name
    ,up_id
from tree
start with up_id = 8 connect by prior id = up_id

查询结果如下:

1 一级 82 二级 13 三级 25 三级 2

2.2 从子节点开始遍历

select
    id
    ,name
    ,up_id
from tree
start with id = 8 connect by prior id = up_id

查询结果是:

2 二级 13 三级 25 三级 2

2.3 start with 条件 connect by prior 条件

  • start with 条件 表示查询语句的开始条件。
  • connect by prior 条件 表示连接条件。从上边的例子上看,id = up_id 表示父子节点的关联关系。prior 表示的是遍历关系。prior 与父节点在一起表示向上层遍历,prior 与子节点在一起表示向下遍历。

到此这篇关于Oracle数据库层级遍历查询的文章就介绍到这了,更多相关Oracle层级遍历查询内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

您可能有感兴趣的文章
Oracle缩表空间的完整如何解决实例

详解Oracle控制文件及日志文件的管理问题

oracle指定类型和指定位数创建序列号的代码详解

Oracle官方工具SQLDeveloper的简单如何使用

Oracle如何使用in语句不能超过1000问题的如何解决办法