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-& ...
随机推荐
- FFmpeg开发笔记(三)FFmpeg的可执行程序介绍
外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景:另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性 ...
- FPGA原语初步试验
FPGA原语初步实验 1.实验原理 将FPGA的原语基本语法加入到实际的工程中,可以通过实验具体得到相应的数字电路.这里先从与.或.非门开始,准备将数字电路的设计思路引入verilog细节设计. 2. ...
- WebRTC开源框架
1.什么是WebRTC WebRTC (Web Real-Time Communications)是一项实时通讯的技术,旨在使得浏览器能为实时通信提供简单的JavaScript接口,让浏览器通过JS实 ...
- KingbaseES V8R6集群运维案例之---sys_monitor.sh start启动动态库错误
案例说明: 在KingbaseES V8R6集群部署了postgis后,执行sys_monitor.sh start启动集群时,出现动态库错误,如下图所示: 适用版本: KingbaseES V8R6 ...
- 如在 Java 中分割 Excel 工作表
前言 在Excel中创建的大多数商业报告不是单页的文档,而是包含了多个上下文相关的信息,这些信息被存储在多个工作表中.例如我们的一些地区销售报告.按部门分类的员工记录.每家店铺的库存清单等. 然而,随 ...
- 05 Ajax请求(扩展,延伸)
05 Ajax请求(扩展,延伸) 首先, 我们用Flask创建一个后台服务器(自己做网站了哈) 目录结构: 服务端: from flask import Flask, render_template, ...
- CMake 入门教程:从零开始构建 C/C++ 项目
CMake是一个跨平台的自动化构建工具,可以用于构建各种类型的项目,包括*C++.C.Python.Java*等.本文将从零开始,介绍如何使用CMake构建一个简单的C/C++项目 安装CMake 首 ...
- Python 简介和用途
什么是Python? Python是一种流行的编程语言,由Guido van Rossum创建,并于1991年发布. 它用于以下领域: 网页开发(服务器端) 软件开发 数学 系统脚本编写 Python ...
- 2020东京奥运会奖牌榜可视化分析(Pyechart)
数据获取和处理 从网页中获取各国的奖牌数量和排名以及奖牌类型(json格式). #奖牌榜数据 url = 'https://app-sc.miguvideo.com/vms-livedata/olym ...
- Windows wsl2安装Ubuntu
wsl(Windows Subsystem for Linux)即适用于Windows的Linux子系统,是一个实现在Windows 10 / 11上运行原生Linux的技术. wsl2 为其迭代版本 ...