Oracle递归查询

描述:现有两个数据表base_menu1和base_menu2,存储菜单,其中id字段表示菜单的唯一id,parent_id存储该菜单父级菜单的id,用递归查询的方式将菜单按照层级关系查询出来,并且要展示菜单的层级关系。(如区分菜单是几级菜单)

cs 复制代码
select t.id,t.name,t.parent_id
    case
        when level=1 then '一级菜单'
        when level=2 then '二级菜单'
        else '三级菜单'
    end as menu_level
 from (
     select id,name,parent_id
     from base_menu1
     union all
     select id,name,parent_id
     from base_menu2 
)t
start with t.parent_id is null
connect by prior t.id=t.parent_id

注:

  1. union all:表示两个表的查询结果合并

  2. connect by prior和start with用来实现递归查询。start with指定递归的起始节点,connect by prior指定父子关系。

  3. case when根据菜单的层级关系(level)向菜单添加level字段,使用该字段区分菜单的层级。

相关推荐
程序媛Dev40 分钟前
用这个开源AI,实现了与数据库的“自然语言对话”
数据库·人工智能
v***59832 小时前
redis 使用
数据库·redis·缓存
nbsaas-boot8 小时前
SQL Server 存储过程开发规范(公司内部模板)
java·服务器·数据库
zgl_200537798 小时前
ZGLanguage 解析SQL数据血缘 之 Python + Echarts 显示SQL结构图
大数据·数据库·数据仓库·hadoop·sql·代码规范·源代码管理
acaad8 小时前
Redis下载与安装(Windows)
数据库·redis·缓存
玄〤9 小时前
黑马点评中 VoucherOrderServiceImpl 实现类中的一人一单实现解析(单机部署)
java·数据库·redis·笔记·后端·mybatis·springboot
SunflowerCoder9 小时前
EF Core + PostgreSQL 配置表设计踩坑记录:从 23505 到 ChangeTracker 冲突
数据库·postgresql·c#·efcore
短剑重铸之日9 小时前
《7天学会Redis》Day2 - 深入Redis数据结构与底层实现
数据结构·数据库·redis·后端
Zoey的笔记本10 小时前
「支持ISO27001的GTD协作平台」数据生命周期管理方案与加密通信协议
java·前端·数据库
什么都不会的Tristan10 小时前
MybatisPlus-扩展功能
数据库·mysql