zoukankan      html  css  js  c++  java
  • [Oracle整理]树形查询(start with connect by)

    说明:本内容是工作用到的知识点整理,来自工作中和网络。
    代码于Oracle9上测试。

    树形查询(start with connect by)

    作用:

    Start with...Connect By子句

    递归查询一般用于一个表维护树形结构的应用

    语法:

    SELECT …

    CONNECT BY  PRIOR列名1=列名2 (列名1=PRIOR列名2 )

    [START WITH]

    Where condition

    注意:

    PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上

    CONNECT BY PRIOR ID=PRAENTID :上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录

    例子:

    要实现的效果

    clip_image002

    step1创建测试表

    -- 1
    create table xx_test2
    (
    folder_id number,
    folder_name varchar2(255),
    parent_id number
    )

    setp2添加数据

    -- 2
    insert into xx_test2 values(1,'C',10000);
    insert into xx_test2 values(2,'Windows',1);
    insert into xx_test2 values(3,'System32',2);
    insert into xx_test2 values(4,'Config',3);

    step3实现

    -- 3
    SELECT folder_id, folder_name, parent_id, LEVEL
      FROM xx_test2
    CONNECT BY PRIOR folder_id = parent_id
     START WITH folder_id = (SELECT folder_id
                               FROM (SELECT folder_id, parent_id
                                       FROM xx_test2
                                     CONNECT BY folder_id = PRIOR parent_id
                                      START WITH folder_id = 1)
                              WHERE parent_id = 10000)
     ORDER BY LEVEL

    clip_image004

    注意:

    Level是关键字,可以直接使用。表示树形的层级,即深度。

  • 相关阅读:
    如何更改Web Service部署生成的App_Code.dll的名称
    Orcas中C#语言的新特性:自动属性,对象初始化器,和集合初始化器
    驗證類javascript
    多线程下WinForm开发应该注意哪些问题?
    把表从Access2007导出到Sql Server
    面向对象模型的四种核心技术
    ASP常用代碼二
    熊猫烧香代码
    简繁体互转代码
    上班人员必读:“五险一金”详解!
  • 原文地址:https://www.cnblogs.com/htht66/p/2330965.html
Copyright © 2011-2022 走看看