【发布时间】:2021-07-23 13:33:51
【问题描述】:
我有一个表,我想使用分层查询从底部到顶部。
问题是我需要使用CONNECT_BY_ROOT 从根(顶部)获取一列的值,但是由于我颠倒了分层查询的工作方式(颠倒连接前的先验和开头),这函数 (CONNECT_BY_ROOT) 将我的 'start with' 行视为级别 1 (root) 然后得到这个值。
换句话说,我想要一种反转CONNECT_BY_ROOT 的方法,以从最后可能的级别而不是根中获取列的值。
+----+-----------+-------+
| ID | ID_PARENT | VALUE |
+----+-----------+-------+
| 1 | null | 5 |
| 2 | 1 | 9 |
| 3 | 2 | null |
+----+-----------+-------+
我想像这样将 ID = 1 (5) 的值变为 ID = 3:
+----+-------+------------+
| ID | VALUE | VALUE_root |
+----+-------+------------+
| 1 | 5 | 5 |
| 2 | 9 | 5 |
| 3 | null | 5 |
+----+-------+------------+
我试过了,但我得到的只是 null 作为 value_root:
SELECT id,
CONNECT_BY_ROOT VALUE as VALUE_root
FROM my_table
START WITH ID = 3
CONNECT BY ID = PRIOR ID_PARENT
编辑:我忘了提到在我的真实系统中我正在处理数百万行数据,我首先反转分层查询的原因是为了让它更好在性能方面!
【问题讨论】:
标签: sql oracle hierarchical-query