zoukankan      html  css  js  c++  java
  • 如何使用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递归用法
  • 相关阅读:
    how to uninstall devkit
    asp.net中bin目录下的 dll.refresh文件
    查找2个分支的共同父节点
    Three ways to do WCF instance management
    WCF Concurrency (Single, Multiple, and Reentrant) and Throttling
    检查string是否为double
    How to hide TabPage from TabControl
    获取当前系统中的时区
    git svn cygwin_exception
    lodoop打印控制具体解释
  • 原文地址:https://www.cnblogs.com/liuys635/p/13431635.html
Copyright © 2011-2022 走看看