Sql server Sql HierarchyId如何获取2级祖先

Sql server Sql HierarchyId如何获取2级祖先,sql-server,hierarchy,Sql Server,Hierarchy,使用sql hierarchy Id如何获取所有没有子级(即最后一个decentant)的行 假设我的表的结构如下: Id, Name, HierarchyId 有以下几行: 1, Craig, / 2, Steve, /1/ 3, John, /1/1/ 4, Collin /1/1/1 5, Sam, /2/ 6, Matt, /2/1/ 7, Chris, /2/1/1/ 8, Molly, /2/1/1/1 现在,当我通过Id=8时,也就是说,对于molly,我想要2级,这意

使用sql hierarchy Id如何获取所有没有子级(即最后一个decentant)的行

假设我的表的结构如下:

 Id, 
 Name,
 HierarchyId
有以下几行:

1, Craig, /
2, Steve, /1/
3, John, /1/1/
4, Collin /1/1/1
5, Sam, /2/
6, Matt, /2/1/
7, Chris, /2/1/1/
8, Molly, /2/1/1/1
现在,当我通过Id=8时,也就是说,对于molly,我想要2级,这意味着Matt和chris

其他人也是如此

我怎样才能做到这一点


谢谢

您可以修改以下查询以实现此目的:

declare @hierarchyid hierarchyid
select @hierarchyid = [HierarchyId] from table_name where id = child_id
select * from table_name where [HierarchyId] in (@hierarchyid.GetAncestor(2))