0

使用 sql 层次结构 ID 如何获取所有没有子代的行(即最后一个后代)?

假设我的表结构如下:

 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

对其他人也是如此。

我怎样才能做到这一点?

谢谢

4

1 回答 1

0

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

declare @hierarchyid hierarchyid
select @hierarchyid = [HierarchyId] from table_name where id = child_id
select * from table_name where [HierarchyId] in (@hierarchyid.GetAncestor(2))
于 2013-03-20T12:35:42.183 回答