Oracle中start with…connect by prior子句用法connect by 是结构化查询中用到的,其基本语法是
select column_name from tablename
start with 条件1
connect by 条件2
where 条件3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:org_id,parent_id,那么通过表示每一条记录的parent是谁,就可以形成一个树状结构,用上述语法的查询可以取得这棵树的所有记录。
prior 关键字表示父数据,prior 条件表示子数据需要满足父数据的什么条件。
实际使用
在项目中我们经常用到层级编码,例如:301090213,他其实是一个按照每2个数值分割的一种树形数据结构,在实际使用中我们希望通过301090213这个编码找出它所对应的所有父级数据。
常规情况我们会使用Like关键字来直接查找,这里其实Oracle提供了树形查找的方式。
我们其实可以这样写代码即可
SELECT * invname from
bd_invcl
start WITH pk_invcl = 'pk'
connect by invcode = prior substr(invcode, 0, length(invcode) -2);
拼接字符
SELECT wm_concat(invname) from
bd_invcl
start WITH pk_invcl = 'pk'
connect by invcode = prior substr(invcode, 0, length(invcode) -2);
文章评论