层次查询连接通过使用start with of子句



我正在使用的数据被测序如下:

示例

我想知道的是:

想要

我从查询中获得的是此(带有实际数据的实际查询,已发布在本文的末尾:

获取

这是我现在拥有的代码,我觉得它接近给我我想要的。

选择 *选择不同的ID ,Idnew ,connect_by_root怠速 ,connect_by_isleaf" isleaf" ,connect_by_iscycle iScycle ,级别seq_order 来自Mytable TBL1 由Nocycle IDNew连接=先验ID 从不存在开始(从mytable TBL2中选择1个 其中tbl2.itemloadid = tbl.itemloadidnew))ABCABC.Idlast订购,seq_order desc

我从此代码中获得的输出是:

输出

我如何确保序列的第一个值解释为根(而不是今天的叶子)?据我了解,如果它们被解释为根,我可以用id_first打印一列,而不是我今天拥有的id_last。

帮助您非常感谢!:)

您必须反转connect by子句:

select t.*, connect_by_root(id) id_first
  from mytable t 
  start with not exists (select 1 from mytable x where x.id_new = t.id)
  connect by id = prior id_new

dbfiddle demo

相关内容

最新更新