SQL Server树形结构获取所有的子节点
SQL Server树形结构获取数据
表结构如下:

JobNum是ID
TargetJobNum类似于ParentID
所有的子节点
一次 SQL 就拿到所有子孙
SQL 全选
;WITH Tree AS
(
-- 基础节点(起始节点)
SELECT JobNum, TargetJobNum,1 as deep
FROM Erp.JobProd
WHERE JobNum = 'M000247'
UNION ALL
-- 递归查找子节点
SELECT c.JobNum, c.TargetJobNum,p.deep+1 as deep
FROM Erp.JobProd c
INNER JOIN Tree p ON c.TargetJobNum = p.JobNum
)
SELECT *
FROM Tree;
获取顶级父节点,祖先节点
SQL 全选
;WITH Ancestors AS
(
-- 基础节点(起始节点)
SELECT JobNum, TargetJobNum,0 as deep
FROM Erp.JobProd
WHERE JobNum = '000296'
UNION ALL
-- 递归查找子节点
SELECT c.JobNum, c.TargetJobNum,p.deep+1 as deep
FROM Erp.JobProd c
INNER JOIN Ancestors p ON c.JobNum = p.TargetJobNum
)
SELECT * FROM Ancestors OPTION (MAXRECURSION 0) 
🔹 说明
deep表示距离起始节点的层数起始节点
deep = 0返回的记录中:
deep = 1→ 直接父节点deep = 2→ 父的父节点(祖父)…一直到根
版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
post 张国生


