1

我有一个作为 CorporateStructure 的表格,如下所示,其中包含以下数据:

╔════╦════════╦═════════════╗
║ Id ║  Name  ║ HierarchyId ║
╠════╬════════╬═════════════╣
║  1 ║ john   ║ /           ║
║  2 ║ smith  ║ /1          ║
║  3 ║ John2  ║ /1/1/       ║
║  4 ║ Collin ║ /1/1/1      ║
╚════╩════════╩═════════════╝

我有 id 4,我想找到父母我该怎么做?

问候维沙尔

4

1 回答 1

3

正如迈克尔指出 smith ( /1) 和 Collin ( /1/1/1) 的字面值似乎不是有效的HierarchyId

更正这些值,您可以使用获取父节点GetAncestor

尝试这个 :-

Select * from YourTable
where [HierarchyId] in (
           Select [HierarchyId].GetAncestor([HierarchyId].GetLevel()-1).ToString()
           from YourTable
           where id=4
           )

SQL FIDDLE演示

于 2013-03-20T11:12:47.510 回答