SQL server 树形递归查询
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 树形递归查询的更多相关文章
- [SQL Server]树形结构的创建
对于SQL Server来说,构建显示一个树形结构不是一件容易的事情,逻辑构造能力不是它的强项.不过也不是说它没有能力干这个事情,只要换一种思维方式就可以理解它的工作原理. 例如,现在有一张表的内容如 ...
- SQL Server CTE 递归查询全解
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server CTE 递归查询全解 -- 转 学习
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server CTE 递归查询全解(转载)
在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递归查询,本文详细介绍CTE递归调用的特性和使用示例 ...
- SQL Server 树形表非循环递归查询
很多人可能想要查询整个树形表关联的内容都会通过循环递归来查...事实上在微软在SQL2005或以上版本就能用别的语法进行查询,下面是示例. --通过子节点查询父节点WITH TREE AS( ...
- SQL Server 实现递归查询
基础数据/表结构 Sql 语句 ;With cte(id,pid,TName)As ( Select id,pid,TName Union All Select B.i ...
- SQL SERVER树形结构数据——批量删除分组数据
定义函数获取某结点下所有子结点: CREATE FUNCTION [dbo].[fn_GetSubGroupInfoById] ( @id AS INT --某分组Id ) RETURNS @SubG ...
- SQL SERVER递归查询
SQL SERVER 进行递归查询 有如下数据表
- MS SQL Server递归查询
原文:MS SQL Server递归查询 刚才在论坛上看到网友一个要求.参考如下,Insus.NET分析一下,可以使用MS SQL Server的递归查询,得到结果.准备一张表: 根据网友提供的数据, ...
- 项目升级-oracle改版sql server问题点汇总
目录 1.符号使用 1.1 :->@ 1.2 mod()->% 1.3 ||->+ 1.4 off等表别名 1.5 columnnum=1->top 1 1.6 minus-& ...
随机推荐
- ForkJoinPool在生产环境中使用遇到的一个问题
1.背景 在我们的项目中有这么一个场景,需要消费kafka中的消息,并生成对应的工单数据.早些时候程序运行的好好的,但是有一天,我们升级了容器的配置,结果导致部分消息无法消费.而消费者的代码是使用Co ...
- golang gc的内部优化
今天讲一个常见的gc compiler(也就是官方版本的go编译器和runtime)在垃圾回收的扫描标记阶段做的优化. 我对这个优化的描述印象最深的是在bigcache的注释里,大致内容是如果map的 ...
- 关于数据校验Bean Validation的学习
1,导相关依赖 2,常用的Validation注解 @NotNull: 标记字段不能为 null @NotEmpty: 标记集合字段不为空(至少要有一个元素) @NotBlank: 标记字段串字段不能 ...
- KingbaseES V8R6集群运维案例-- 备库数据库服务意外down分析
案例说明: KingbaseES V8R6一主二备架构的集群,两个备库节点sys_log日志分别不同时间点收到'fast shutdown request'的日志信息,导致备库数据库服务down,需要 ...
- Scala 中断循环
一.采用 Scala 自带的函数,退出循环 1 package com.atguigu.break 2 3 object TestBreak { 4 import scala.util.control ...
- vue3 快速入门系列 —— 基础
vue3 快速入门系列 - 基础 前面我们已经用 vue2 和 react 做过开发了. 从 vue2 升级到 vue3 成本较大,特别是较大的项目.所以许多公司对旧项目继续使用vue2,新项目则使用 ...
- #树状数组#CF461C Appleman and a Sheet of Paper
题目传送门 分析 可以发现往左翻太多相当于往右翻一点,所以如果翻的位置超过一半那么打一个取反标记再另一边翻转, 用树状数组维护当前厚度,时间复杂度 \(O(n\log^2 n)\) 代码 #inclu ...
- Git入门指南:从新手到高手的完全指南
Git是一种强大的分布式版本控制系统,广泛应用于软件开发中.它的使用不仅可以帮助开发团队更好地管理代码,还可以提高团队协作效率和代码质量.随着软件开发的不断发展,版本控制成为了程序员必备的一项技能.G ...
- 有奖调研 | 让虚拟照入现实的完美AR开发平台长什么样?
6年前的夏天,一款现实与虚拟结合的手游成了无数玩家的心头好,手握智能手机,玩家就能在真实世界来一场妙趣横生的探险,收集动漫作品里如数家珍的宠物精灵.AR技术结合用户熟识喜爱的内容形式,与现实环境中扩充 ...
- Qt5自带的日志功能,将日志输出到文件
#include "QtWidgetsApplication1.h" #include <QtWidgets/QApplication> #include <Qt ...