gpt4 book ai didi

sql-server - 父/子层次结构 TreeView

转载 作者:行者123 更新时间:2023-12-03 01:08:52 24 4
gpt4 key购买 nike

我有一个像这样的 parent 表

CHILD_ID | PARENT_ID | NAME
1 | Null | Bill
2 | 1 | Jane
3 | 1 | Steve
4 | 2 | Ben
5 | 3 | Andrew

我想得到这样的结果集

Bill
---Jane
------Ben
---Steve
------Andrew

我知道我需要进行排名查询来对级别进行排名和自连接,但我在网上能找到的只是 CTE 递归

我以前在 Oracle 中这样做过,但在 MS SQL 中没有这样做

最佳答案

有点 hacky,可以改进,但希望它能展示原理......

;with relation (childId, parentId, childName, [level], [orderSequence])  
as
(
select childId, parentId, childName, 0, cast(childId as varchar(20))
from @parents
where parentId is null
union all
select p.childId, p.parentId, r.[level]+1, cast(r.orderSequence + '_' + cast(p.childId as varchar) as varchar(20))
from @parents p
inner join relation r on p.parentId = r.childId
)

select right('----------', ([level]*3)) +childName
from relation
order by orderSequence

如果您想避免递归,那么另一种方法是实现具有相关树结构信息的树表 - 请参阅 http://www.sqlteam.com/article/more-trees-hierarchies-in-sql漫步一下

关于sql-server - 父/子层次结构 TreeView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9380620/

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