`
ranyut
  • 浏览: 256187 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

Oracle 递归查询connect by priop 注解

阅读更多
connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start by cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。

PRIOR和START WITH关键字是可选项
PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR
运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是
自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH 子句为
可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询
条件的行作为根节点。
完整的例子如SELECT PID,ID,NAME FROM T_WF_ENG_WFKIND START WITH PID =0 CONNECT BY PRIOR ID = PID

自底向上查询
select t.*, t.rowid from ad52 t 
start with t.yae049=0104020101 CONNECT BY PRIOR t.yae100=t.yae049



自顶向下查询
select t.*, t.rowid from ad52 t 
start with t.yae100=0101 CONNECT BY PRIOR t.yae049=t.yae100



  • 大小: 17.9 KB
  • 大小: 49.4 KB
分享到:
评论
1 楼 ranyut 2010-06-18  
今天发现如果菜单的ID都是依次有规律的编的话,可以使用like模糊子句很方便的查询。
以前一般的like子句是这样写的:
select t.* from ad52 t 
WHERE t.yae049  LIKE '01040103%' 	 ORDER BY t.yae049

但这样得不到我们想要的树型菜单,改变一下

select t.* from ad52 t 
WHERE '01040103' LIKE t.yae049 || '%' ORDER BY t.yae049


查询结果

[img]http://dl.iteye.com/upload/picture/pic/65299/8b71b3f2-4c00-3555-8b7b-0439adf83666.jpg [/img]

相关推荐

    Oracle递归树形结构查询功能

    oracle树状结构查询即层次递归查询,是sql语句经常用到的,在实际开发中组织结构实现及其层次化实现功能也是经常遇到的。这篇文章给大家介绍了Oracle递归树形结构查询功能,需要的朋友参考下

    oracle递归查询的例子

    oracle递归查询的例子,一个从创建表到查询的完整的例子。oralce递归查询是一个很实用的语句,在sqlserver目前还没有,但是语法常常不容易被我们记住,所以本人总结了一下,写到文档里了。

    oracle递归查询向上向下.txt

    oracle递归查询

    Oracle 递归函数介绍

    在 Oracle 中,递归函数可以使用 CONNECT BY 语句来实现递归查询。CONNECT BY 语句的基本语法如下所示: ```sql SELECT ... FROM ... START WITH ... CONNECT BY ... ``` 其中,`START WITH` 子句指定了递归查询的...

    oracle递归、迭代

    Oracle使用递归查询。查询树结构的sql。在Oracle中,递归查询要用到start with ……connect by prior……

    递归查询菜单树,支持mysql,oracle

    递归查询菜单树,支持mysql,oracle,含表结构,递归查询菜单,支持mysql,oracle,含表结构递归查询菜单。

    oracle-递归查询地区名称

    oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称

    Oracle start with.connect by prior子句实现递归查询

    Oracle start with.connect by prior子句实现递归查询

    MySQL多种递归查询方法.docx

    Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...

    Oracle递归查询start with connect by prior的用法

    主要给大家介绍了关于Oracle递归查询start with connect by prior、的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    递归查询父子关系记录 oracle

    oracle 如何递归查询父子关系。经常用于构造树结构

    dhtmlx tree 使用,与oracle递归查询的结合

    dhtmlx tree oracle递归查询,比起在程序中用递归查询,速度大大提高。

    Oracle递归SQL学习

    Oracle使用递归SQL展示一棵树

    深入sql oracle递归查询

    本篇文章是对sql oracle 递归查询进行了详细的分析介绍,需要的朋友参考下

    connect_by_prior_递归算法

    oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的

    Oracle递归查询

    有的情况下,我们需要用递归的方法整理数据,这才程序中很容易做到,但是在数据库 ...下面我以最典型的树形结构来说明下如何在Oracle使用递归查 询。 为了说明方便,创建一张数据库表,用于存储一个简单的树形结构

    Oracle通过递归查询父子兄弟节点方法示例

    主要给大家介绍了关于Oracle如何通过递归查询父子兄弟节点的相关资料,递归查询对各位程序员来说应该都不陌生,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

    Oracle的Connect By使用示例

    在Oracle中用Start with...Connect By子句递归查询

Global site tag (gtag.js) - Google Analytics