hierarchyID GetAncestor作为ID

时间:2014-07-08 23:08:20

标签: parsing sql-server-2012 hierarchyid

问题:我需要从hierarchyID中推断出parentID。

示例:我的columnID为8,我当前的hierarchyID为/1/2/4/8。当我致电columnName.GetAncestor(1)时,这会给我/1/2/4/。我需要的是4的ID。

我该怎么做?或者hierarchyID只是为了加入?

我正在调查SqlHierarchyID.Parse(),但我不明白如何使用它。

1 个答案:

答案 0 :(得分:1)

为了获取GetAncestor(1)hierarchyid的另一个字段值,您需要像这样进行内部连接:

SELECT A.hid, A.myid, B.hid, B.myid 
FROM dbo.mytable A
INNER JOIN dbo.mytable B ON A.hid.GetAncestor(1) = B.hid

这将返回每一行,其父项位于同一行(但可能会错过根行,但是如果你添加一个WHERE子句来获取你感兴趣的hid,那么这应该足够了。)