start with的用法,其基本语法如下:

select … from tablename
start with 条件1
connect by 条件2
where 条件3;

但是我在pl/sql中写入以上格式的时候,竟然会报错!于是将where子句放在了from子句后面就成功了。

要想用到此种查询语句,就需要在表结构中设计一个子值字段和一个对应的父值字段。

select ... from ... start with...connect by的结果是将子项和父项查询出来,按照树状结构存储在一张表中。如果语句后面没有加上order by条件,那么查询出来的结果是以树的中序遍历的结果存储在结果表中。

在这个语法中,出现了一个PRIOR关键字。其大致用法如下:

select * from T_Role  where State!=-1 start with roleId='bbdb2f75' connect by prior roleId = parent_roleId order by idx 

从以上sql语句可以看出,start with后面跟的就是整棵树的根节点。网上有很多对prior关键字的解释不是很通俗易懂。按照我的理解,prior关键字在子值字段前面,那么就需要查询其子孙节点,也就是树的自顶向下查询;如果prior关键字在父值字段前面,那就是需要查询根节点的祖先节点,也就是树的自底向上查询。这样理解的确很通俗易懂,用起来也方便。上面这条sql语句就是要查询根节点为"bbdb2f75"的子孙节点。roleId为子值字段,parent_roleId为父值子段。

 

start with...connect by子句的浅用的更多相关文章

  1. Oracle学习之start with...connect by子句的用法

    转自:http://www.blogjava.net/xzclog/archive/2010/03/05/314642.html,多谢博主分享 Oracle中start with…connect by ...

  2. Oracle 之 树查询 START WITH ... CONNECT BY ...子句

    START WITH ... CONNECT BY ...子句是结构化查询中用到的,其基本语法是: select … from tablename start with 条件1 connect by ...

  3. Oracle中start with...connect by子句的用法

    http://www.blogjava.net/xzclog/archive/2010/03/05/314642.html

  4. connect by和strart with子句

    --使用connect by和strart with子句 SELECT [level],column,expression, ... FROM table [WHERE where_clause] [ ...

  5. Oracle中start with...connect by/start with…connect by prior子句的用法

    connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...

  6. Oracle中start with...connect by (prior)子句的用法

    connect by 是结构化查询中用到的,基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3; 例:select * ...

  7. Start with connect by prior 递归查询

    在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1 ...

  8. oracle分层查询中的start with和connect by(树结构查询)

    来源:  http://blog.csdn.net/itmyhome1990/article/details/16338637   ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表 ...

  9. start with connect by prior 递归查询用法

    这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: create table a_test ( parentid ), sub ...

随机推荐

  1. 如何创建自己的python包

    写过python的人都知道python最方便也最牛的地方就是它有无数的第三方lib可以直接拿来使用,可以让编写代码变的更容易. 长用的安装第三方lib的方法有easy_install和pip,这两个的 ...

  2. 解决gvim中php函数提示php_funclist.dict无法生效的问题

    在Windows中, 当打开php文件时, 提示 dicvim(setlocal) unknown option: Files\Vim\vimfiles\dict\php_funclist.dict ...

  3. mysql链接 显示 error: 'Access denied for user 'root'@'localhost' (using password: NO)'

    解决方案 https://stackoverflow.com/questions/2995054/access-denied-for-user-rootlocalhost-using-password ...

  4. 瞎折腾之Webhooks

    之前听学长介绍过webhooks,也知道有这个东西,但没有真正的用于项目部署,长久以来一直过着“刀耕火种”的生活......长久以来,都是这么更新代码的: 由于之前做的项目刚刚上线,需要对其进行持续的 ...

  5. stm32 延时函数 delay_ms 范围

    void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nus*fac_us; //时间加载 SysTick->VAL=0x00; //清空计数器 ...

  6. Java东西太多,记录一些知识点

    实习两个月了,这两个月接触了不少东西,简单列举一下知识,未来需要多多学习和了解. 1.前端js.extjs4.Jquery(js框架这些基本现学现用): 2.基础不好要补补Servlet和JSP(再往 ...

  7. Jmeter 处理Unicode编码转为中文

    对于接口中返回报文,有的接口返回信息是Unicode编码,写断言的时候,要么就Response Assertion就写成Unicode编码的断言,如下图: 真心不觉得返回报文加密能有多安全,别人将报文 ...

  8. BeautifulSoup中的find,find_all

    1.一般来说,为了找到BeautifulSoup对象内任何第一个标签入口,使用find()方法. 以上代码是一个生态金字塔的简单展示,为了找到第一生产者,第一消费者或第二消费者,可以使用Beautif ...

  9. angular 模板语法(官方文档摘录)

    https://angular.cn/guide/template-syntax {{}} 和"" 如果嵌套,{{}}里面求完值,""就是原意 <h3&g ...

  10. 【Docker】性能测试监控平台搭建:InfluxDB+Grafana+Jmeter+cAdvisor

    前言 在做性能测试时,如果有一个性能测试结果实时展示的页面,可以极大的提高我们对系统性能表现的掌握程度,进而提高我们的测试效率.但是我们每次打开Jmeter都会有几个硕大的字提示别用GUI模式进行负载 ...