介绍oracle递归所涉及到的函数
start by prior子句用法
connect by 是结构化查询中用到的,
其基本语法是:
select ... from tablename
where 条件1
start with 条件2
connect by 条件3 ;
例如:
很多时候,表结构会存在以下字段,
____________________
| id | int | 主键id |
| parentId | int | 父级id |
————————————
那么,如果涉及到业务,根据父级id 找到所属的主键id,
操作
方式1、直接条件查询父级id,则获取到主键id,
方式2、使用递归,根据父级id,递归查询获取主键id
分析
方式1 存在一个缺陷,如果该表数据存在多级别,那么该方式值获取到上一级,没法实现获取到顶级主键id
-- 根据子级获取父级id
SELECT * FROM tableName tn
START WITH tn.parentId=24
CONNECT BY tn.id=prior tn.parentId ;
反之
connect by 里面对换位置,则实现根据父级id获取子级信息,如果想要实现多条件查询,可以使用where条件搭配使用