View Code

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

1 表结构

View Code

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 美工

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

View Code

Id Pid DeptName lvl
----------- ----------- -------------------------------------------------- -----------
2 1 研发部 0
5 2 小组1 1
6 2 小组2 1
9 5 前端组 2
10 5 美工 2

(5 行受影响)

3 原理(摘自网上)

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

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

转载于:https://www.cnblogs.com/xqhppt/archive/2011/02/15/1955366.html

SQL递归查询(with cte as)相关推荐

  1. SQL递归查询(with cte as) 物料分解

    需求 最近在做一个MRP的项目,需要根据生产下达的计划从原始无聊表中分解出成品所需要的原材料和数量. 参考 http://www.cnblogs.com/xqhppt/archive/2011/02/ ...

  2. SQL递归查询(with as)

    SQL递归查询(with cte as) with cte as (     select Id,Pid,DeptName,0 as lvl from Department     where Id ...

  3. SQL SERVER 2005 CTE(通用表达式)

    SQL Server2005数据库查询中使用CTE Builder.com.cn 通用表表达式(CTEs)是SQLServer2005的一项新功能.它们类似于alias(如在SELECTT1.*FRO ...

  4. SQL递归查询树型分类数据

    目录 前言 1.准备分类数据 2.递归原理 3.实现 4.结合mybatis查询 总结 前言 相信大家在处理业务的时候经常会遇到分类数据,当面对这种情况时该如何处理呢?在这里我使用了两种方式解决:一种 ...

  5. sql递归查询上级_递归的实际业务场景之MySQL 递归查询

    喜欢就点个赞呗! 源码<--请点击此处查看 引入 当我看到一些评论时,例如下面的样子.我挺好奇这个功能是怎么样做出来的.进过查阅资料,发现这其实是 MySQL 的递归操作.下面就让我操作一下怎么 ...

  6. SQL递归查询上级部门树

    SQL递归查询上级部门树,sql2008以上支持with语法. 在做预算归口部门.使用部门的时候,需要递归查询出部门的逐级上级sParent. SQL脚本: with tmp as (select * ...

  7. mysql 在不同的数据库间查询语句_有关数据库SQL递归查询在不同数据库中的实现方法...

    本文给大家介绍有关数据库SQL递归查询在不同数据库中的实现方法,具体内容请看下文. 比如表结构数据如下: Table:Tree ID Name ParentId 1 一级  0 2  二级 1 3  ...

  8. oracle 递归查询,Oracle SQL递归查询教程

    在oracle 中可以通过使用start with - connect by prior - 实现递归查询.如果你对递归查询很 模糊了话,或许下面的示例将会帮助你更好的理解oracle SQL 递归查 ...

  9. sql oracle 递归查询语句,oracle递归函数 oracle中SQL递归查询

    关于oracle递归调用的自定义函数如何结束 比如存储过程a中有b,b中含a.用return结束判断,执行还是锁表,怎么解决 关于oracle递归调用的自定义函数如何结束 可以调用. C语言最基本的模 ...

  10. SQL 递归查询所有父子节点

    原 SQL 递归查询所有父子节点 2016年05月16日 22:57:16 名贤集 阅读数 21628 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net ...

最新文章

  1. 为什么磁场强度大了呢?
  2. C 语言的标准输入对象是,《面向对象程序设计C+》期末试卷及标准答案
  3. 修完 1300 万行代码,我帮苹果省下 2 亿美元,但没拿到承诺的千万股票
  4. Python之深入解析优秀的时间格式转换工具Delorean
  5. Android 4.0 SDK下载安装
  6. (转)Spring的三种实例化Bean的方式
  7. Muse-UI +Vue2.0框架开发环境搭建
  8. 分布式文件系统MooseFs部署(二)
  9. Android Export时错误提示:Conversion to Dalvik format failed with error 1
  10. 英语面试自我介绍范文
  11. 幽默故事:1、我喜欢的女神;2、农村淑女(木子家原创)
  12. java word 加密_Java 加密Word文档
  13. 纪中游记 - Day 1
  14. LinuxProbe学习第一天
  15. 你所不知道的VR全景拍摄地拍步骤和细节
  16. Linux01---Linux常用命令
  17. CF756div3 vp
  18. windows xp下如何安装SQL server2000企业版
  19. 如何避开精准算法推送的新闻或文章呢?
  20. 课程向:深度学习与人类语言处理 ——李宏毅,2020 (P10)

热门文章

  1. configure: error: Cannot find the WebServer
  2. 高仿爱鲜蜂购物应用源码
  3. 程序包管理之编译安装
  4. 【笔记】如何配置kvm桥接网络
  5. RHCE033内容摘要
  6. 自己常用js方法(DOM操作)
  7. HENXU-SOA的业务规划和建模方法之八——组件化业务模型(CBM)介绍
  8. XP中的重要惯例和规则
  9. vue项目 报sockjs.js?9be2:1606 GET http://192.168.43.226:8080/sockjs-node/info?t=1584966826465 net::ERR
  10. hwclock设置日期_hwclock显示系统硬件时钟的日期和时间