Oracle 递归查询个人心得

基本语法

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

eg:select * from table
        start with org_id = 'sdadsadd'
        connect by prior id = parent_id;

表中存在两个字段:id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。

其中:
        条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
        条件2 是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR org_id = parent_id;就是说上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
        条件3 是过滤条件,用于对返回的所有记录进行过滤。

  1. START WITH 子句为可选项,用来标识哪个节点作为查找树型结构的根节点,指向的根节点可以有多个。
  2. CONNECT BY子句说明每行数据将是按层次顺序检索,规定将表中的数据连入树型结构的关系中。PRIOR运算符必须放置在连接关系的两列中某一个的前面。
  3. PRIOR被放置于等号前后的位置,决定查询时的检索顺序。PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,称为自顶向下;PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,称为自底向上。
  4. 定义查起始节点 :自顶向下查询树结构时,可以定义任何节点为起始节点,以此开始向下查找。
  5. 使用LEVEL:具有树结构的表中,每一行数据都是树结构中的一个节点,每行记录都可以有一个层号。层号根据节点与根节点的距离确定。不论从哪个节点开始,该起始根节点的层号始终为1,根节点的子节点为2, 以此类推。
  6. 节点和分支的裁剪:使用WHERE子句来限定树型结构中的单个节点,以去掉树中的单个节点,但它却不影响其后代节点(自顶向下检索时)或前辈节点(自底向顶检索时)。
  7. 关于排序:树结构查询中可以使用ORDER BY 子句,来改变查询结果的显示顺序,不必按照遍历树结构的顺序。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值