查找使用HIERARCHYID所有叶子节点记录(Find all leaf node records

2019-09-17 09:29发布

我怎么会去查询仅仅是“只叶子节点”(即无子女)记录?

我曾尝试这样的查询:

select *
from TableA tt
where tt.HierarchyId.GetDescendant(null, null) not in 
(
    Select  t.HierarchyId
    from TableA t
)

但是,这似乎仍然返回一些节点是有孩子。

我使用的是内置的hierarchyid数据类型(MS SQLSERVER的一部分)

Answer 1:

SELECT A.HieracrchyId, A.HierarchyId.ToString()
  FROM dbo.TableA AS A 
  LEFT OUTER JOIN dbo.TableA AS B
  ON A.HierarchyId = B.HierarchyId.GetAncestor(1)
  WHERE B.HierarchyId IS NULL;


文章来源: Find all leaf node records using hierarchyid