1,原始查询

原始表格查询:

   select * from dbo.T_DeptInfo;

原始表格查询结果:

2,递归查询

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

递归查询结果

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

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

缩进递归查询结果

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

-- with 一个临时表(括号里包括的是你要查询的列名)
with tem_table(dept_id,parent_id,dep_name,curlevel,havechild)
as
(
--1,初始查询(这里的parent_id='000'是我门数据中最底层的根节点)
select dept_id, parent_dept_id, dept_name, 1 as level,1 as havechild
from
dbo.T_DeptInfo
where
parent_dept_id = '000'
union all
--2,递归条件
select a.dept_id, a.parent_dept_id, a.dept_name, b.curlevel+1,
havechild =(
case
when exists(select 1 from T_DeptInfo where T_DeptInfo.parent_dept_id = a.dept_id ) then 1
else 0
end
)
from
dbo.T_DeptInfo a
inner join
tem_table b
on (a.parent_dept_id = b.dept_id)
)
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. SpringBoot集成drools

    目录 1.背景 2.需求 3.实现 3.1 引入jar包 3.2 编写drools配置类 3.3 编写Person对象 3.4 编写drl文件 3.5 编写kmodule.xml文件 3.6 编写Co ...

  2. C#OpenCvSharp YOLO v3 Demo

    效果 项目 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.D ...

  3. quartus之LPM_COMPARE测试

    quartus之LPM_COMPARE测试 1.IP描述 比较器的IP,可以比较两路数据是否相等.相等输出为1,不等输出为0的aeb信号是需要测试的量. 2.基础测试 module compare_t ...

  4. echarts 中国地图tooltip实现提示框

    point: 鼠标位置,如 [20, 40]. params: 同 formatter 的参数相同. dom: tooltip 的 dom 对象. rect: 只有鼠标在图形上时有效,是一个用x, y ...

  5. #网络流,dinic,最小割#洛谷 3227 [HNOI2013]切糕

    题目传送门 题目大意 \(P\)行\(Q\)列的楼房高度均为\(R\),每一层改造要花费一定的金钱, 每个楼房都要挑选有且仅有一层进行改造,并且相邻两个楼房改造位置的相对高度不能超过\(D\), 问最 ...

  6. #期望dp#洛谷 6835 [Cnoi2020]线形生物

    题目 分析 设\(f[i]\)表示由点\(i\)走到点\(i+1\)的期望步数, \(dp[i]\)表示由点1走到点\(i+1\)的期望步数, 那么\(dp\)为\(f\)的前缀和,最后答案为\(dp ...

  7. 使用OHOS SDK构建flac

    参照OHOS IDE和SDK的安装方法配置好开发环境. 从github下载源码. 执行如下命令: git clone --depth=1 https://github.com/xiph/flac 进入 ...

  8. 深入理解MD5算法:原理、应用与安全

    第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要.消息摘要算法是一种用于验证数据完整性和安全性的重要工具.在众多消息摘要算法中,MD5(Message Digest Algorith ...

  9. Javascript中的继承?如何实现继承?

    一.是什么 继承(inheritance)是面向对象软件技术当中的一个概念 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为&quo ...

  10. flask通过线程池实现异步

    from flask import Flask from time import sleep from concurrent.futures import ThreadPoolExecutor # D ...