• [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是关键字,可以直接使用。表示树形的层级,即深度。

  • 相关阅读:
    NFS 规格严格
    Spring 规格严格
    如何做好软件功能测试 规格严格
    51CTO上不错的文章 规格严格
    一个好网站 规格严格
    系统小贴士 规格严格
    编译Zabbix 规格严格
    JS学习 规格严格
    杂项 规格严格
    MySQL 自增ID 规格严格
  • 原文地址:https://www.cnblogs.com/htht66/p/2330965.html
Copyright © 2020-2023  润新知