• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
nicey_k
博客园    首页    新随笔    联系   管理    订阅  订阅

Oracle的递归查询

•数据展示

 

 •查询code为001001001的所有子节点

1 SELECT d.id,d.code
2 FROM pm_project_tasks d
3 START WITH d.id='000166a618b8da13'
4 CONNECT BY PRIOR d.id=d.parentid order by d.code

>结果为:

 

 •查询code为001001007的最顶层节点

1 SELECT id,
2 code,
3 CONNECT_BY_ROOT(id),
4 CONNECT_BY_ROOT(code)
5 FROM pm_project_tasks t
6 WHERE t.id = '000166cdcae9d2fe'
7 START WITH t.code = '001'
8 CONNECT BY PRIOR ID = t.parentid

>结果为:

 

•查询code为001开始的计划下的所有节点的层级和是否最叶子节点

--LEVEL:查询该计划下的层级
--CONNECT_BY_ISLEAF:查询节点是否是叶子节点,是则为1,不是则为0
1
SELECT id, code, t.parentid, LEVEL, CONNECT_BY_ISLEAF 2 FROM pm_project_tasks t 3 where t.project_info_id = '0001635dca95aa44e' 4 START WITH t.code = '001' 5 CONNECT BY PRIOR ID = t.parentid 6 ORDER BY code;

 >结果为:

 

 •查询所有节点的路径

1 SELECT ID, t.code, SUBSTR(SYS_CONNECT_BY_PATH(code, '->'), 3) NAME_PATH
2 FROM pm_project_tasks t
3 where t.project_info_id = '0001635dca95aa44e'
4 START WITH t.code = '001'
5 CONNECT BY PRIOR ID = t.parentid
6 order by t.code

  >结果为:

 

posted @ 2020-04-11 16:32  nicey_k  阅读(276)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3