使用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级,这意味着马特和克里斯
同样也适用于其他人。
我怎样才能实现这个目标?
由于
答案 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))