zoukankan      html  css  js  c++  java
  • Oracle用Start with...Connect By子句递归查询

    ORACLE 提供了一个有趣的功能 connect by 子句,它可以对具有家族树结构的分枝进行排序。它的用途有机构或公司的各层结构,财务的科目代码等。

    要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子。

    实现语句:
    SELECT column
    FROM table_name
    START WITH column=value
    CONNECT BY PRIOR 
    父主键=子外键

    网上有朋友已经给了一个简洁的例子,就直接引用他的例子如下:
    ——————————————————————————————————————
    Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。
    创建示例表:
    CREATE TABLE TBL_TEST
    (
      ID    NUMBER,
      NAME  VARCHAR2(100 BYTE),
      PID   NUMBER                                  DEFAULT 0
    );
     
    插入测试数据:
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
    INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
     
    从Root往树末梢递归
    select * from TBL_TEST
     start with id=1
     connect by prior id = pid
     
    从末梢往树ROOT递归
    select * from TBL_TEST
     start with id=5
     connect by prior pid = id

    例子出处:http://blog.csdn.net/54powerman/archive/2006/04/03/649068.aspx

  • 相关阅读:
    CentOS7最小化安装后要做的事
    Django 2.0 新特性
    Django2.+ path配置
    Django 安装
    Django基础
    http协议
    Centos7 下mysql大小写敏感问题
    CentOS 设置mysql的远程访问
    Linux下彻底卸载mysql详解
    静态库和动态库
  • 原文地址:https://www.cnblogs.com/flyingfish/p/1030309.html
Copyright © 2011-2022 走看看