sql递归查询处理树状结构数据,适用于sqlserver和oracle

在工作中用到根据某个组织的ID,查询当前所有的上级,并按层级返回

递归语法:

以with开头,再以2个查询用 union all连接,且2个查询列表字段和类型返回必须一致

向上查询数据,oo是最终返回的表,也可以写为with oo as ....

但是不能写为 with oo(FID,fname_l2 ,FPARENTID) 去掉某一个列表字段的值

会报错显示SQL 错误 [8158] [S0001]: 'oo' 中的列多于列列表中指定的列。

复制代码
--向上
   with oo(FID,fname_l2 ,FPARENTID,FLEVEL) as
        (
            SELECT
                org.FID,
                org.fname_l2,
                org.FPARENTID,
                org.FLEVEL
            FROM
                T_ORG_ADMIN org
            where
                org.fnumber = 'tymatest1'
                
           union all
            select
                t.FID,
                t.fname_l2,
                t.FPARENTID,
                t.FLEVEL
            from
                T_ORG_ADMIN t
            join oo on oo.FPARENTID = t.FID
        )
        SELECT
        	distinct *
        FROM
        oo

join oo on oo.FPARENTID = t.FID 代表2个表之间的连接关系,向上查询

以下语句代表向下查询

join oo on oo.fid = t.FPARENTID 代表2个表之间的连接关系,向下查询

复制代码
 with oo as
        (
            SELECT
                org.FID,
                org.fname_l2,
                org.FPARENTID,
                org.FLEVEL
            FROM
                T_ORG_ADMIN org
            where
                org.fnumber = 'tymatest1'
                
           union all
            select
                t.FID,
                t.fname_l2,
                t.FPARENTID,
                t.FLEVEL
            from
                T_ORG_ADMIN t
            join oo on oo.fid = t.FPARENTID
        )
        SELECT
        	distinct *
        FROM
        oo        
相关推荐
欧先生^_^1 小时前
Linux内核可配置的参数
linux·服务器·数据库
问道飞鱼1 小时前
【数据库知识】Mysql进阶-高可用MHA(Master High Availability)方案
数据库·mysql·adb·高可用·mha
tiging1 小时前
centos7.x下,使用宝塔进行主从复制的原理和实践
数据库·mysql·adb·主从复制
wangcheng86991 小时前
Oracle常用函数-日期时间类型
数据库·sql·oracle
zizisuo1 小时前
面试篇:Spring Security
网络·数据库·安全
一只fish2 小时前
MySQL 8.0 OCP 1Z0-908 题目解析(2)
数据库·mysql
StarRocks_labs2 小时前
从InfluxDB到StarRocks:Grab实现Spark监控平台10倍性能提升
大数据·数据库·starrocks·分布式·spark·iris·物化视图
搞不懂语言的程序员2 小时前
Redis的Pipeline和Lua脚本适用场景是什么?使用时需要注意什么?
数据库·redis·lua
王RuaRua2 小时前
[数据结构]5. 栈-Stack
linux·数据结构·数据库·链表
大学生小郑4 小时前
Go语言八股之Mysql基础详解
mysql·面试