SQL 语句递归查询 With AS 查找所有子节点
create table #EnterPrise
(
Department nvarchar(50),--部门名称
ParentDept nvarchar(50),--上级部门
DepartManage nvarchar(30)--部门经理
)
insert into #EnterPrise select '技术部','总经办','Tom'
insert into #EnterPrise select '商务部','总经办','Jeffry'
insert into #EnterPrise select '商务一部','商务部','ViVi'
insert into #EnterPrise select '商务二部','商务部','Peter'
insert into #EnterPrise select '程序组','技术部','GiGi'
insert into #EnterPrise select '设计组','技术部','yoyo'
insert into #EnterPrise select '专项组','程序组','Yue'
insert into #EnterPrise select '总经办','','Boss'
--查询部门经理是Tom的下面的部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='Tom'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.ParentDept=h1.Department
)
select * from hgo
/*
Department ParentDept DepartManage rank
--------------- -------------------- ----------------------- -----------
技术部 总经办 Tom 0
程序组 技术部 GiGi 1
设计组 技术部 yoyo 1
专项组 程序组 Yue 2
*/
--查询部门经理是GiGi的上级部门名称
;with hgo as
(
select *,0 as rank from #EnterPrise where DepartManage='GiGi'
union all
select h.*,h1.rank+1 from #EnterPrise h join hgo h1 on h.Department=h1.ParentDept
)
select * from hgo
/*
Department ParentDept DepartManage rank
-------------------- ---------------------- ----------- -----------
程序组 技术部 GiGi 0
技术部 总经办 Tom 1
总经办 Boss 2
*/
如果递归次数大于100,只需在与cte连接的sql 语句的最后加上option (maxrecursion 0) 即可.默认递归
次数为100,设为0表示没有次数限制.
相关文章
- Vue专题 05_详解vue生命周期的每个节点
- EasyCVR集群切换服务节点,HIKSDK接入设备出现播放失败是什么原因?
- web.config中customErrors节点的配置「建议收藏」
- SQL Prompt10 安装激活教程,让你写sql 如鱼得水[通俗易懂]
- 二级节点工业互联网标识解析
- 如何更安全的升级Kubernetes节点
- 【Linux 内核 内存管理】物理内存组织结构 ② ( 内存模型 | 平坦内存 | 稀疏内存 | 非连续内存 | 内存管理系统三级结构 | 节点 Node | 区域 Zone | 页 Page )
- T-sql语句修改SQL Server数据库逻辑名、数据库名、物理名的方法
- redis与memcached的区别_动力节点Java学院整理
- jQuery 获取DOM节点的两种方式详解编程语言
- HDFS源码分析(一)—–INode文件节点详解大数据
- MySQL的更新SQL实用技巧(mysql更新sql)
- MySQL查询:精准搜索SQL语句(mysql查询sql)
- 使用MySQL查询子节点:简单有效的层级关系管理(mysql查询子节点)
- MySQL查看SQL日志:巧用技巧(mysql查看sql日志)
- 手把手教你使用Oracle 进行SQL除法操作(oracle除法sql)
- SQL与MSSQL:各有自身特性的不同之处(sql与mssql的区别)
- 深入了解Oracle监听SQL技术(oracle监听sql)
- 深入理解Linux系统节点,提升系统管理效率(linux系统节点)
- MySQL如何创建及使用SQL文件(mysql创建sql文件)
- sql与数据服务的桥梁:SQLServerSQLServer:连接SQL与数据服务的桥梁(sqlserver 介于)
- MSSQL中最佳的SQL语句编写技巧(sql mssql 语句)
- MySQL的PL/SQL:把数据库中的业务流程变得更简单!(mysql的pl sql)
- MySQL SQL的递归技术应用(mysql sql 递归)
- 精通MySQL高级SQL——一步一步登上专家层次(mysql 高级sql)
- 库用动力节点Redis资料库构建企业数据库(动力节点redis资料)
- 崩溃Redis集群节点瘫痪危机(redis集群节点崩溃)
- 式架构实现Redis集群节点分布式架构的挑战(redis集群节点分布)
- 构建Redis集群选择正确的节点数量(redis集群 节点个数)
- 解决Redis集群单节点故障(redis集群单节点故障)
- 实现高可用的Redis集群采用Proxy节点(redis集群 代理节点)
- Oracle SQL代码审查引发的期待与担忧(oracle sql评审)
- Oracle SQL基线检测实现安全性提升(oracle sql基线)
- 角逐Redis集群仅靠一个集群节点即可(redis集群只用主角点)
- jquery取子节点及当前节点属性值的方法