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字段,使用该字段区分菜单的层级。

相关推荐
知识分享小能手几秒前
MongoDB入门学习教程,从入门到精通,MongoDB监控完全指南(22)
数据库·学习·mongodb
℡終嚸♂6804 分钟前
SQL 注入与 ThinkPHP 漏洞技术讲义
数据库·sql
杰克尼6 分钟前
redis(day07-Redis 最佳实践)
数据库·redis·缓存
倔强的石头1067 分钟前
表空间自动目录创建与存储管理实践:参数化配置与性能优化
数据库·oracle·性能优化
不剪发的Tony老师7 分钟前
Goose:一款成熟灵活的数据库变更管理工具
数据库
草莓熊Lotso9 分钟前
Linux 线程深度剖析:线程 ID 本质、地址空间布局与 pthread 源码全解
android·linux·运维·服务器·数据库·c++
AcrelGHP15 分钟前
安科瑞AIM-T系列工业IT绝缘监测及故障定位解决方案为关键供电场所筑牢安全防线
大数据·运维·数据库
fīɡЙtīиɡ ℡16 分钟前
【Mysql——MVCC】
数据库·mysql
XDHCOM18 分钟前
ORA-31477: LogMiner会话清理失败,Oracle报错故障修复远程处理,快速解决,数据安全无忧
数据库·oracle
白毛大侠19 分钟前
# MySQL InnoDB 隔离级别与 MVCC 完全解析
android·数据库·mysql