问题描述
我有一张表,上面有父母和孩子的数据。
Parent | Child
---------------
A B
B C
C D
当我将父项的条件放在哪里时,我想从该表中获取所有子项。
ex-
select * from view where parent = 'A'
结果应为B,C,D。
解决方法
这里是一个选择:
SQL> with test (parent,child) as
2 (select 'A','B' from dual union all
3 select 'B','C' from dual union all
4 select 'C','D' from dual
5 )
6 select max(ltrim(sys_connect_by_path(child,'-'),'-')) result
7 from test
8 connect by prior child = parent
9 start with parent = 'A';
RESULT
---------------------------------------------------------------------------
B-C-D
SQL>
,
您可以使用Listagg和Hierarchy子句完成
SELECT LISTAGG(CHILD,',') WITHIN GROUP (ORDER BY CHILD) FROM (
SELECT CHILD FROM TABLE1 START WITH PARENT = 'A' CONNECT BY PRIOR CHILD = PARENT);