gpt4 book ai didi

sql-server - SQL查询获取完整的层次结构路径

转载 作者:行者123 更新时间:2023-12-02 22:42:14 25 4
gpt4 key购买 nike

我有一个包含三列 NodeId、ParentNodeId、NodeName 的表。对于每个节点,我想获得像“lvl1/lvl2/lvl3...”这样的完整路径,其中lvl1、lvl2和lvl3是节点名称。我在这个链接 http://www.sql-server-helper.com/functions/get-tree-path.aspx 找到了一个可以做到这一点的函数。但我想使用 CTE 或任何其他技术来提高效率。如果可以以更好的方式实现这一目标,请告诉我。提前致谢。

最佳答案

这是 CTE 版本。

declare @MyTable table (
NodeId int,
ParentNodeId int,
NodeName char(4)
)

insert into @MyTable
(NodeId, ParentNodeId, NodeName)
select 1, null, 'Lvl1' union all
select 2, 1, 'Lvl2' union all
select 3, 2, 'Lvl3'

declare @MyPath varchar(100)

;with cteLevels as (
select t.NodeId, t.ParentNodeId, t.NodeName, 1 as level
from @MyTable t
where t.ParentNodeId is null
union all
select t.NodeId, t.ParentNodeId, t.NodeName, c.level+1 as level
from @MyTable t
inner join cteLevels c
on t.ParentNodeId = c.NodeId
)
select @MyPath = case when @MyPath is null then NodeName else @MyPath + '/' + NodeName end
from cteLevels
order by level

select @MyPath

关于sql-server - SQL查询获取完整的层次结构路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3727543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com