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

  • 相关阅读:
    javac 小记
    安全专家的工具箱
    MyBatis 缓存机制(十三)
    SpringMVC 环境搭建
    MyBatis 模糊查询的 4 种实现方式
    MyBatis 项目开发中是基于 XML 还是注解?
    MyBatis 动态 SQL 语句中出现 '<' 的问题
    数据库设计的三大范式
    mybatis 同时使用 XML 和注解
    数据库事务
  • 原文地址:https://www.cnblogs.com/flyingfish/p/1030309.html
Copyright © 2011-2022 走看看