Sql HierarchyId如何获得2级祖先

时间:2013-03-20 07:54:56

标签: sql-server hierarchy

使用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时,即为了莫莉,我想要祖先2级,这意味着马特和克里斯

同样也适用于其他人。

我怎样才能实现这个目标?

由于

1 个答案:

答案 0 :(得分:0)

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

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