【问题标题】:Ordering by HierarchyId but with parent first按 HierarchyId 排序,但首先是父级
【发布时间】:2015-03-27 16:33:44
【问题描述】:

在我们的一个数据库中,我们使用 HierarchyId 列。然后我们像这样从表中选择行:

SELECT HierarchyId.ToString()
FROM   Tree
ORDER BY HierarchyId DESC

这以一个很好的层次结构布局,但所有节点都以相反的顺序排列,如下所示:

1/13/
1/12/123/
1/12/122/
1/12/121/
1/12/
1/11/
1/

但是,我们希望节点保持此顺序,但父节点位于子节点之上,如下所示:

1/
1/13/
1/12/
1/12/123/
1/12/122/
1/12/121/
1/11/

我能想到的唯一解决方案涉及递归 CTE,它会否定使用 HierarchyId 的许多好处。有人对如何做到这一点有任何想法吗?

谢谢,

【问题讨论】:

    标签: sql hierarchy hierarchyid


    【解决方案1】:

    你可以试试这个,希望它会奏效。

    SELECT HierarchyId.ToString()
    FROM   Tree
    ORDER BY cast(HierarchyId as nvarchar(100)) DESC
    

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 2016-11-03
      • 2023-03-05
      • 2010-11-19
      • 2013-06-29
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多