sql查询【树形结构数据】

WITH T AS
 (SELECT TO_CHAR(I.ITEMNO) ID,
         '-1' AS PID,
         TO_CHAR(I.CNNAME) AS NAME,
         0 AS ISLEAF
    FROM BO_ACT_DICT_KV_ITEM I
   WHERE DICTKEY = 'INFOPUBLICADD.CODE.INFOTYPE'
  UNION
  SELECT TO_CHAR(G.EXTTEXT2) ID,
         TO_CHAR(G.EXTTEXT1) PID,
         (SELECT TO_CHAR(R.CNNAME)
            FROM BO_ACT_DICT_KV_ITEM R
           WHERE DICTKEY = 'INFOPUBLICADD.CODE.RESTRICT'
             AND R.ITEMNO = G.EXTTEXT2) AS NAME,
         1 AS ISLEAF
    FROM BO_ACT_DICT_KV_ITEM G
   WHERE DICTKEY = 'INFOPUBLICADD.CODE.INFOTYPE_RESTRICT')
SELECT *
  FROM T
 START WITH T.PARENTID ='-1'
CONNECT BY PRIOR T.ID = T.PID

WITH AS 短语,也叫做子查询部分(subquery factoring)可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理。

更多用法可访问https://www.cnblogs.com/JamesHooke/p/10964495.html这位同学有举例介绍

其中我们T中先拿出来了所有的父节点和子节点:

在这里插入图片描述
union
在这里插入图片描述

START WITH 为层级结构设计模式所使用的短语,一般语法如下:

SELECT ... FROM    + 表名
WHERE              (+ 条件3)
START WITH         + 条件1
CONNECT BY PRIOR   + 条件2

条件1指的是 起点
此处我们从 T.PARENTID=’-1’开始,找到的都是根节点

条件2指的是连接条件
此处我们用CONNECT BY PRIOR T.ID = T.PID
即上一条信息的ID是下一条信息的PID
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值