如何使用 SQL 在数据库中的树类结构中查找最后一级子节点
how to find the last level child nodes in tree kind structure in database using SQL
我有一个父子关系存储在 table
如果我用 1 查询,我想检索 1 的所有 LAST LEVEL Children。
我应该回来 5, 6,8.
忽略出现的任何周期性数据。
请看附件
使用分层查询并使用 pseudocolumns CONNECT_BY_ISLEAF
和 CONNECT_BY_ISCYCLE
:
将输出限制为仅 non-cyclic 叶行
Oracle 设置:
CREATE TABLE your_table ( parent_column, child_column ) AS
SELECT 1, 2 FROM DUAL UNION ALL
SELECT 2, 3 FROM DUAL UNION ALL
SELECT 3, 4 FROM DUAL UNION ALL
SELECT 4, 5 FROM DUAL UNION ALL
SELECT 3, 6 FROM DUAL UNION ALL
SELECT 3, 7 FROM DUAL UNION ALL
SELECT 7, 8 FROM DUAL;
查询:
SELECT child_column
FROM your_table
WHERE CONNECT_BY_ISLEAF = 1
AND CONNECT_BY_ISCYCLE = 0
START WITH parent_column = 1
CONNECT BY NOCYCLE PRIOR child_column = parent_column
输出:
CHILD_COLUMN
------------
5
6
8
我有一个父子关系存储在 table
如果我用 1 查询,我想检索 1 的所有 LAST LEVEL Children。 我应该回来 5, 6,8.
忽略出现的任何周期性数据。
请看附件
使用分层查询并使用 pseudocolumns CONNECT_BY_ISLEAF
和 CONNECT_BY_ISCYCLE
:
Oracle 设置:
CREATE TABLE your_table ( parent_column, child_column ) AS
SELECT 1, 2 FROM DUAL UNION ALL
SELECT 2, 3 FROM DUAL UNION ALL
SELECT 3, 4 FROM DUAL UNION ALL
SELECT 4, 5 FROM DUAL UNION ALL
SELECT 3, 6 FROM DUAL UNION ALL
SELECT 3, 7 FROM DUAL UNION ALL
SELECT 7, 8 FROM DUAL;
查询:
SELECT child_column
FROM your_table
WHERE CONNECT_BY_ISLEAF = 1
AND CONNECT_BY_ISCYCLE = 0
START WITH parent_column = 1
CONNECT BY NOCYCLE PRIOR child_column = parent_column
输出:
CHILD_COLUMN
------------
5
6
8