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
在这里插入图片描述

发布了21 篇原创文章 · 获赞 3 · 访问量 6697
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 终极编程指南 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览