天天看点

oracle树形结构遍历sys_connect_by_path

表结构:表名 tableA 字段:id,parent_id ,title

需求:查询出树形结构存在数据库中的数据

SELECT

            sys_connect_by_path(

                title,

                '+'

            ) title,

            id

        FROM

            tableA

        WHERE

            visible = '1' START WITH id ='0001' CONNECT BY parent_id = PRIOR id

 语法解释:START WITH:以……开始

CONNECT BY:用……连接

prior:这棵树中年级最大的是谁

  sys_connect_by_path:将树形查询到的指定字段title以+号连接(sys_connect_by_path函数就是从start with开始的地方开始遍历,并记下其遍历到的节点),也就是说这个语法有记忆功能,第一次title是小头爸爸,第二次是大头儿子,那么第二个数据结果就是【+小头爸爸+大头儿子】

翻译过来就是:查询以id='0001'为起点,parent_id等于‘0001’的全部数据,并且title用+号分割。

案例结果示意图:

oracle树形结构遍历sys_connect_by_path

 全文:相当于小头爸爸,id='0001'的父节点

S店:大头儿子,也就是叶子节点。

具体详细流程可以参考:https://mp.csdn.net/postedit/103250347

(这个链接也是我参考过的链接)