sql-server - 使用 hierarchyid 查找所有叶节点记录

标签 sql-server sql-server-2008 hierarchyid

我将如何只查询“只有叶节点”的记录 (即没有 child )?

我试过这样的查询:

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

但这似乎仍然返回一些有 child 的节点。

我正在使用内置的 hierarchyid 数据类型(ms sqlserver 的一部分)

最佳答案

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;

关于sql-server - 使用 hierarchyid 查找所有叶节点记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10694894/

相关文章:

c# - 哪种 native dotNet 数据类型最适合传递 SQL Server hierarchyId 值?

sql-server-2008 - 更新 SQL Server 2008 中的所有 HierarchyID 节点

sql-server - sql 使用 COUNT 设置变量

c# - 无法删除数据库,因为它当前正在使用中

sql - 如何使用 PIVOT 在 Select 查询中动态声明列

sql-server - HierarchyID:获取所有后代以获得 parent 列表

sql-server - 如果 SQL Server 作业步骤在执行过程中被修改,会发生什么情况

sql - 查找 sql 中最常见的值并按从高到低排序 (asc)

sql - 具有 uniqueidentifier 的递归 CTE 必须在 anchor 中具有值

sql-server-2008 - 查找 SQL Server 2008 计算列依赖项