zoukankan      html  css  js  c++  java
  • oracle connect by用法篇 (包括树遍历)之一

    1、基本语法

    select * from table [start with condition1]
        connect by [prior] id=parentid

    一般用来查找存在父子关系的数据,也就是树形结构的数据;其返还的数据也能够明确的区分出每一层的数据。

    start with condition1 是用来限制第一层的数据,或者叫根节点数据;以这部分数据为基础来查找第二层数据,然后以第二层数据查找第三层数据以此类推。

    connect by [prior] id=parentid 这部分是用来指明Oracle在查找数据时以怎样的一种关系去查找;比如说查找第二层的数据时用第一层数据的id去跟表里面记录的parentid字段进行匹配,如果这个条件成立那么查找出来的数据就是第二层数据,同理查找第三层第四层…等等都是按这样去匹配。

     prior还有一种用法:

    select * from table [start with condition1]
        connect by id= [prior] parentid

    或者

    select * from table [start with condition1]
        connect by [prior] parentid = id

    这种用法就表示从下往上查找数据,可以理解为从叶子节点往上查找父级几点,用第一层数据的parentid去跟表记录里面的id进行匹配,匹配成功那么查找出来的就是第二层数据;上面的那种就是从父级节点往下查找叶子节点。

    其他特性

    level关键字,代表树形结构中的层级编号;第一层是数字1,第二层数字2,依次递增。

    CONNECT_BY_ROOT方法,能够获取第一层集结点结果集中的任意字段的值;例CONNECT_BY_ROOT(字段名)。

    2、下面来贴两个例子

    2.1从根节点查找叶子节点

    select t.*, level, CONNECT_BY_ROOT(id)
      from tab_test t
     start with t.id = 0
    connect by prior t.id = t.fid;

    2.2从叶子节点查找上层节点

    --第一种,修改prior关键字位置
    select t.*, level, CONNECT_BY_ROOT(id)
      from tab_test t
     start with t.id = 4
    connect by t.id = prior t.fid;
    
    --第二种,prior关键字不动 调换后面的id=fid逻辑关系的顺序
    select t.*, level, CONNECT_BY_ROOT(id)
      from tab_test t
     start with t.id = 4
    connect by prior t.fid = t.id;

    3、写几个平常用到的其他一些用法

    3.1生成数字序列结果集

    使用rownum实现1到10的序列:

    select rownum from dual connect by rownum<=10;

     

    使用level实现1到10的序列:

    select level from dual connect by level<=10;

  • 相关阅读:
    DVWA 黑客攻防演练(十)反射型 XSS 攻击 Reflected Cross Site Scripting
    DVWA 黑客攻防演练(九) SQL 盲注 SQL Injection (Blind)
    DVWA 黑客攻防演练(八)SQL 注入 SQL Injection
    DVWA 黑客攻防演练(七)Weak Session IDs
    DVWA 黑客攻防演练(六)不安全的验证码 Insecure CAPTCHA
    DVWA 黑客攻防演练(五)文件上传漏洞 File Upload
    工作流表结构设计
    Visual Studio 2019尝鲜----新建空项目体验
    《使用CSLA 2019:CSLA .NET概述》原版和机译文档下载
    .NET快速开发平台的在线预览
  • 原文地址:https://www.cnblogs.com/cainiao-Shun666/p/6963259.html
Copyright © 2011-2022 走看看