sql嵌套查询-按父项对结果分组

问题描述

| 我需要从单个表中返回树状结果。目前,im正在使用connect by并开始使用,以确保返回所有正确的结果。
select id,parent_id
     from myTable 
 connect by prior id = parent_id start with name = \'manager\' 
     group by id,parent_id
 order by parent_id asc
但是我希望结果以树状结构返回。因此,每次找到父行时,其子行将直接显示在其下方。然后移到下一个父对象并执行相同操作 预期成绩
  - Parent A
   - child a
   - child b 
  - Parent B
   - child c
   - child d 
实际结果
- Parent A 
- Parent B
- child a 
- child b 
- child c 
- child d
是否可以在oracle中执行此操作?我的表使用parent_id字段来标识行何时具有父级。每行还有一个排序顺序,这是应该在其父项和唯一ID下排序的顺序。 我正在使用Oracle数据库     

解决方法

您想要使用use3ѭ。您所查询的排序是按
parent_id
列进行的,该列将覆盖所有层次结构的排序。 下面的查询应执行所需的操作:
with my_hierarchy_data as (
  select 1 as id,null as parent_id,\'Manager\' as name from dual union all
  select 2 as id,1 as parent_id,\'parent 1\' as name from dual union all
  select 3 as id,\'parent 2\' as name from dual union all
  select 4 as id,2 as parent_id,\'child 1\' as name from dual union all
  select 5 as id,\'child 2\' as name from dual union all
  select 6 as id,3 as parent_id,\'child 3\' as name from dual union all
  select 7 as id,\'child 4\' as name from dual 
)
select id,parent_id,lpad(\'- \',level * 2,\' \') || name as name
from my_hierarchy_data
connect by prior id = parent_id
start with name= \'Manager\'
order siblings by parent_id asc
    ,在Oracle层次查询中可以使用一个特殊值“ 6”。它为层次结构顶层的行返回1,为其子级返回2,依此类推。您可以使用它来创建缩进,如下所示:
select lpad(\'- \',level*2,\' \') || name
     from myTable 
 connect by prior id = parent_id start with name = \'manager\' 
     group by id,parent_id
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...