当前位置:数据库 > Oracle >>

oracle学习笔记(1)--oracle递归查询

oracle学习笔记(1)--oracle递归查询
 
首先就提到过connect by是专门来做递归查询的,他就是利用数据库里表结构的设计的递归应用的关系,进行遍历,从而达到我们的要求。
 
 connect by后面是进行递归的条件,在这个条件句子里经常会使用到prior这个关键字,
 这个关键字表示的是前一条记录,比如 connect by prior id = parentid, 
 这里表明递归的条件规则是上一条记录的id是下一条记录的parentid,
 这样下一条的id又是下下条的parentid, 
 一层层的归结下去,直到不再满足这里的connect by里的条件,表示已经到达了树的叶了。
 在递归里,还有一个也经常用到 start with,这里表示的是遍历的起始的条件, 
 比如start with parentid = 0 or parentid is null。
 这样我们可以确定来的从什么条件开始遍历, 通过start with ..... connect by的配合,  我们从而可以很有针对性的拿到我们的需要的树形的数据。
 
// 查出带有等级字段以及该子产品目录是否为树叶的子产品目录列表

1

2
      SELECT   pc.*,   LEVEL , CONNECT_BY_ISLEAF ISLEAF
3
        FROM   qd_product_category pc
4
        WHERE pc.enabled=1 and pc.deleted=0 and pc.parent_id is not null
5
        START WITH CATEGORY_NAME = ?  and parent_id is null
6
        CONNECT BY PRIOR pc.PK_ID = pc.PARENT_ID
7

 


Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,