3

这是我的表的架构:

Create Table OBJECT_TREE 
( PARENT_ID     int, 
CHILD_ID    int )

该表中的示例数据如下所示:

PARENT_ID   CHILD_ID
---------------------
1             2
2             3
2             4
2             5
3             6
3             7
4             8
4             9

1 ________2________3_______6
                   |       |
                   |       |______7
                   |
                   |
                   |______4_______8
                   |              |
                   |              |______9
                   |
                   |
                   |______5

SQL Server 存储过程应返回给定节点层次结构中“向下”的所有对象(节点 2 的所有向下层次结构对象为 3、4、5、6、7、8、9)

请帮助找到树的叶子节点。

4

2 回答 2

7

幸运的是,这是少数不需要递归的情况之一:

SELECT DISTINCT child_id
FROM object_tree ot
WHERE NOT EXISTS (
    SELECT *
    FROM object_tree nx
    WHERE nx.parent_id = ot.child_id
    );
于 2013-01-13T16:05:47.417 回答
1

此查询将返回所有没有子节点的叶节点。

 SELECT  ot.child_id
FROM object_tree ot
left join object_tree nx on  nx.parent_id = ot.child_id
where nx. parent_id is null
于 2017-05-01T13:16:54.880 回答