1,原始查询

原始表格查询:

  1. select * from dbo.T_DeptInfo;

原始表格查询结果:

2,递归查询

  1. -- with 一个临时表(括号里包括的是你要查询的列名)
  2. with tem_table(dept_id,parent_id,dep_name,curlevel)
  3. as
  4. (
  5. --1,初始查询(这里的parent_id='000'是我门数据中最底层的根节点)
  6. select dept_id, parent_dept_id, dept_name, 1 as level
  7. from
  8. dbo.T_DeptInfo
  9. where
  10. parent_dept_id = '000'
  11. union all
  12. --2,递归条件
  13. select a.dept_id, a.parent_dept_id, a.dept_name, b.curlevel+1
  14. from
  15. dbo.T_DeptInfo a
  16. inner join
  17. tem_table b
  18. on (a.parent_dept_id = b.dept_id)
  19. )
  20. select * from tem_table; --3,递归完成后,一定不能少了这句查询语句,否则会报错

递归查询结果

3,带缩进的的树形递归查询

  1. -- with 一个临时表(括号里包括的是你要查询的列名)
  2. with tem_table(dept_id,parent_id,dep_name,curlevel)
  3. as
  4. (
  5. --1,初始查询(这里的parent_id='000'是我门数据中最底层的根节点)
  6. select dept_id, parent_dept_id, dept_name, 1 as level
  7. from
  8. dbo.T_DeptInfo
  9. where
  10. parent_dept_id = '000'
  11. union all
  12. --2,递归条件
  13. select a.dept_id, a.parent_dept_id,
  14. convert(varchar(100),convert(varchar(100),replicate(' ',b.curlevel+1) + a.dept_name )) as dept_name ,
  15. b.curlevel+1
  16. from
  17. dbo.T_DeptInfo a
  18. inner join
  19. tem_table b
  20. on (a.parent_dept_id = b.dept_id)
  21. )
  22. select * from tem_table; --3,递归完成后,一定不能少了这句查询语句,否则会报错

缩进递归查询结果

4,查询是否子节点的树形递归查询

  1. -- with 一个临时表(括号里包括的是你要查询的列名)
  2. with tem_table(dept_id,parent_id,dep_name,curlevel,havechild)
  3. as
  4. (
  5. --1,初始查询(这里的parent_id='000'是我门数据中最底层的根节点)
  6. select dept_id, parent_dept_id, dept_name, 1 as level,1 as havechild
  7. from
  8. dbo.T_DeptInfo
  9. where
  10. parent_dept_id = '000'
  11. union all
  12. --2,递归条件
  13. select a.dept_id, a.parent_dept_id, a.dept_name, b.curlevel+1,
  14. havechild =(
  15. case
  16. when exists(select 1 from T_DeptInfo where T_DeptInfo.parent_dept_id = a.dept_id ) then 1
  17. else 0
  18. end
  19. )
  20. from
  21. dbo.T_DeptInfo a
  22. inner join
  23. tem_table b
  24. on (a.parent_dept_id = b.dept_id)
  25. )
  26. select * from tem_table; --3,递归完成后,一定不能少了这句查询语句,否则会报错

树形递归查询是否包含子节点的查询结果

 
 

SQL server 树形递归查询的更多相关文章

  1. [SQL Server]树形结构的创建

    对于SQL Server来说,构建显示一个树形结构不是一件容易的事情,逻辑构造能力不是它的强项.不过也不是说它没有能力干这个事情,只要换一种思维方式就可以理解它的工作原理. 例如,现在有一张表的内容如 ...

  2. SQL Server CTE 递归查询全解

    在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...

  3. SQL Server CTE 递归查询全解 -- 转 学习

    在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...

  4. SQL Server CTE 递归查询全解(转载)

    在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...

  5. SQL Server 树形表非循环递归查询

    很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例.   --通过子节点查询父节点WITH  TREE AS(  ...

  6. SQL Server 实现递归查询

    基础数据/表结构                 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...

  7. SQL SERVER树形结构数据——批量删除分组数据

    定义函数获取某结点下所有子结点: CREATE FUNCTION [dbo].[fn_GetSubGroupInfoById] ( @id AS INT --某分组Id ) RETURNS @SubG ...

  8. SQL SERVER递归查询

    SQL SERVER 进行递归查询 有如下数据表

  9. MS SQL Server递归查询

    原文:MS SQL Server递归查询 刚才在论坛上看到网友一个要求.参考如下,Insus.NET分析一下,可以使用MS SQL Server的递归查询,得到结果.准备一张表: 根据网友提供的数据, ...

  10. 项目升级-oracle改版sql server问题点汇总

    目录 1.符号使用 1.1 :->@ 1.2 mod()->% 1.3 ||->+ 1.4 off等表别名 1.5 columnnum=1->top 1 1.6 minus-& ...

随机推荐

  1. FFmpeg开发笔记(三)FFmpeg的可执行程序介绍

    ​外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景:另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性 ...

  2. FPGA原语初步试验

    FPGA原语初步实验 1.实验原理 将FPGA的原语基本语法加入到实际的工程中,可以通过实验具体得到相应的数字电路.这里先从与.或.非门开始,准备将数字电路的设计思路引入verilog细节设计. 2. ...

  3. WebRTC开源框架

    1.什么是WebRTC WebRTC (Web Real-Time Communications)是一项实时通讯的技术,旨在使得浏览器能为实时通信提供简单的JavaScript接口,让浏览器通过JS实 ...

  4. KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误

    案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...

  5. 如在 Java 中分割 Excel 工作表

    前言 在Excel中创建的大多数商业报告不是单页的文档,而是包含了多个上下文相关的信息,这些信息被存储在多个工作表中.例如我们的一些地区销售报告.按部门分类的员工记录.每家店铺的库存清单等. 然而,随 ...

  6. 05 Ajax请求(扩展,延伸)

    05 Ajax请求(扩展,延伸) 首先, 我们用Flask创建一个后台服务器(自己做网站了哈) 目录结构: 服务端: from flask import Flask, render_template, ...

  7. CMake 入门教程:从零开始构建 C/C++ 项目

    CMake是一个跨平台的自动化构建工具,可以用于构建各种类型的项目,包括*C++.C.Python.Java*等.本文将从零开始,介绍如何使用CMake构建一个简单的C/C++项目 安装CMake 首 ...

  8. Python 简介和用途

    什么是Python? Python是一种流行的编程语言,由Guido van Rossum创建,并于1991年发布. 它用于以下领域: 网页开发(服务器端) 软件开发 数学 系统脚本编写 Python ...

  9. 2020东京奥运会奖牌榜可视化分析(Pyechart)

    数据获取和处理 从网页中获取各国的奖牌数量和排名以及奖牌类型(json格式). #奖牌榜数据 url = 'https://app-sc.miguvideo.com/vms-livedata/olym ...

  10. Windows wsl2安装Ubuntu

    wsl(Windows Subsystem for Linux)即适用于Windows的Linux子系统,是一个实现在Windows 10 / 11上运行原生Linux的技术. wsl2 为其迭代版本 ...