博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL递归查询(with cte as)
阅读量:6917 次
发布时间:2019-06-27

本文共 1799 字,大约阅读时间需要 5 分钟。

2011-02-15 16:41 by 忧忧夏天, 2415 阅读, 0 评论, 

with cte as
(
select Id,Pid,DeptName, 0 as lvl from Department
where Id = 2
union all
select d.Id,d.Pid,d.DeptName,lvl + 1 from cte c inner join Department d
on c.Id = d.Pid
)
select * from cte
with cte as ( select Id,Pid,DeptName,0as lvl from Department where Id =2 unionall select d.Id,d.Pid,d.DeptName,lvl+1from cte c innerjoin Department d on c.Id = d.Pid ) select*from cte

1 表结构

Id Pid DeptName
-- --------- ----------- --------------------------------------------------
1 0 总部
2 1 研发部
3 1 测试部
4 1 质量部
5 2 小组1
6 2 小组2
7 3 测试1
8 3 测试2
9 5 前端组
10 5 美工
Id          Pid         DeptName ----------- ----------- -------------------------------------------------- 10           总部 21           研发部 31           测试部 41           质量部 52           小组1 62           小组2 73           测试1 83           测试2 95           前端组 105           美工

2 查询结果 查部门ID=2的所有下级部门和本级

Id Pid DeptName lvl
-- --------- ----------- -------------------------------------------------- -----------
2 1 研发部 0
5 2 小组1 1
6 2 小组2 1
9 5 前端组 2
10 5 美工 2
( 5 行受影响)
Id          Pid         DeptName                                           lvl ----------- ----------- -------------------------------------------------- ----------- 21           研发部                                                0 52           小组1                                                1 62           小组2                                                1 95           前端组                                                2 105           美工                                                 2 (5 行受影响)

3 原理(摘自网上)

  递归CTE最少包含两个查询(也被称为成员)。第一个查询为定点成员,定点成员只是一个返回有效表的查询,用于递归的基础或定位点。第二个查询被称为递归成员,使该查询称为递归成员的是对CTE名称的递归引用是触发。在逻辑上可以将CTE名称的内部应用理解为前一个查询的结果集。

递归查询没有显式的递归终止条件,只有当第二个递归查询返回空结果集或是超出了递归次数的最大限制时才停止递归。是指递归次数上限的方法是使用MAXRECURION。

转载地址:http://agxcl.baihongyu.com/

你可能感兴趣的文章
MediaInfo源代码分析 4:Inform()函数
查看>>
Spread for Windows Forms高级主题(2)---理解单元格类型
查看>>
使用kickstart软件自动化安装CentOS 6.X操作系统
查看>>
2015新题型
查看>>
二进制与十进制整数,浮点数相互转换
查看>>
zabbix监控(二)添加新主机、自定义监控
查看>>
支付宝升级延时到账功能
查看>>
静默安装oracle
查看>>
Java SE 7新特性:创建泛型实例时自动类型推断
查看>>
一个C++程序
查看>>
【小松教你手游开发】【unity实用技能】线性差值计算实现
查看>>
Linux操作系统日志管理方法
查看>>
Elasticsearch - 使用kibana
查看>>
如何打造7*24h持续交付通道?阿里高级技术专家的5点思考
查看>>
220.详细整理学习spring boot
查看>>
用SQL做数据分析_1
查看>>
mxGraph使用经验总结
查看>>
Tomcat优化详解
查看>>
求职者必备!优质简历Word模板来袭
查看>>
Jquery 获取对象的几种方式
查看>>