如何使用start with connect by prior递归用法(×××××)

在oracle数据库中,需要查询树结构类型数据的时候,使用start with connect by prior递归查询非常方便,指定一个起始节点,就可以查询到起始节点以上以及以下的所有树形层级。下面就来介绍下如何使用

  1. 为了能更好的介绍如何使用,首先需要创建一个测试表,然后结合例子来说明

    create table t_menu

    ( menu_id varchar2(32),

      parent_id    varchar2(32));

    insert into t_menu values ( '1', '' );

    insert into t_menu values ( '2', '1' );

    insert into t_menu values ( '3', '1' );

    insert into t_menu values ( '4', '2' );

    insert into t_menu values ( '5', '3' );

    insert into t_menu values ( '6', '4' );

    commit;

    select * from t_menu;

    创建了t_menu表,然后插入几条数据,再查询出表里数据

    如何使用start with connect by prior递归用法
  2.  

    再来看下创建的表结构,为了简单,这里就只有两个字段,menu_id和parent_id

    如何使用start with connect by prior递归用法
  3.  

    start with 递归查询起始条件

    connect by 连接语句,后面加上连接的条件

    为了演示向上和向下两个方向,我们这里选择menu_id为4的中间节点作为起始节点。

    SELECT

        t.menu_id,

        t.parent_id,

        level

    FROM

        t_menu t

    START WITH

        t.menu_id = '4'

    CONNECT BY

        t.parent_id = PRIOR  t.menu_id;

    这里注意下PRIOR的位置,和menu_id放一起,表示向下查询

    如何使用start with connect by prior递归用法
  4.  

    SELECT

        t.menu_id,

        t.parent_id,

        level

    FROM

        t_menu t

    START WITH

        t.menu_id = '4'

    CONNECT BY

        PRIOR  t.parent_id = t.menu_id;

    这里PRIOR和parent_id放一起,表示按照父节点方向,向上查询

    如何使用start with connect by prior递归用法
  5.  

    SELECT

        t.menu_id,

        t.parent_id,

        level

    FROM

        t_menu t

    START WITH

        t.parent_id = '4'

    CONNECT BY

        PRIOR  t.parent_id = t.menu_id;

    START WITH后面的起始条件,换成parent_id,则可以从结果中看出,level为1级的则以parent_id字段为条件做为起始节点

    如何使用start with connect by prior递归用法
  6.  

    以上的语句中,还可以添加where条件语句,这些条件是在递归查询的结果集中,再根据where的条件进行筛选的。

    如何使用start with connect by prior递归用法
posted @   技术研究与问题解决  阅读(210)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2019-08-04 HBase 2.1.3 集群 web 报错InvalidProtocolBufferException 解决方法
2019-08-04 hbase60010端口无法访问web页面
2019-08-04 NTP服务安装及时间同步
2019-08-04 HBase简介、搭建环境及安装部署
2019-08-04 linux下vi命令大全
2019-08-04 linux下的zookeeper启动
2019-08-04 Hadoop 启动/停止集群和节点的命令
点击右上角即可分享
微信分享提示