SQL Server 使用CTE(公共表表达式)递归生成层级树

本文提供了一个使用SQL进行递归查询的实例,通过Common Table Expressions (CTE) 实现了对数据库中层级结构数据的遍历。该示例展示了如何从根节点开始递归获取所有子节点及其路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

WITH cte as
(
-- 取开始节点
SELECT ClassID,UpID,ClassName,cast(ClassName as nvarchar(max)) as ClassPath,0 AS [level] FROM dbo.Class WHERE UpID=0

UNION ALL
-- 递归所有节点
SELECT c.ClassID,c.UpID,c.ClassName,cast(replicate(' ',len(p.ClassPath))+'|_'+c.ClassName as nvarchar(MAX)) as ReportPath,p.[level] +1 
FROM cte P
INNER join dbo.Class c on p.ClassID=c.UpID
)
SELECT ClassID,UpID,ClassName,ClassPath,[level] FROM cte ORDER BY ClassID
 

217a90b18fc071d0c6fb18706b29379338d.jpg

 

转载于:https://my.oschina.net/guanxinsui/blog/2056317

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值