SQL Server树形结构获取所有的子节点


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 Server树形结构获取

获取顶级父节点,祖先节点

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) 

SQL Server树形结构获取所有的子节点

🔹 说明

 

  • deep 表示距离起始节点的层数

  • 起始节点 deep = 0

  • 返回的记录中:

    • deep = 1 → 直接父节点

    • deep = 2 → 父的父节点(祖父)

    • …一直到根

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:用 Jenkins 通过 SSH 自动部署 Docker 服务,同时确保服务器安全
下一篇:没有了
评论列表

发表评论

评论内容
昵称:
关联文章

SQL Server树形结构获取所有节点
EF Linq查找所有节点或者所有节点
EntityFramework Linq 获得所有数据,包括节点
深入理解 EF Core HierarchyId:高效管理树形数据利器
SQL Server获得所有数据库,所有表试图和字段
EntityFramework Linq 查询数据获得树形结构
如何在 SQL Server 中按照修改时间排序获取最新更改表和存储过程
安装 SQL Server 2012 硬件和软件要求(官方全面)
sql server系统表详细说明 之 sys.sql_modules
sql server系统表详细说明 之 sys.objects
SQL Server 中master..spt_values应用
SQL Server中常用全局变量介绍
SQL中根据日期范围生成所有日期数据,批量生成日期
sql server系统表详细说明 之 sys.system_objects
sql server系统表详细说明 之 sys.server_triggers
sql server系统表详细说明 之 sys.all_objects
SQL Server 数据库安全之角色
GZDBHelper连接SQL Server 数据库
GZDBHelper中GetDataSet方法,执行SQL语句,返回DataSet结构
如何设计高效会计科目管理功能:基于ERP系统数据库表结构

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码