SQL递归查询(with cte as)

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 表结构
Id          Pid         DeptName
----------- ----------- --------------------------------------------------
          0           总部
          1           研发部
          1           测试部
          1           质量部
          2           小组1
          2           小组2
          3           测试1
          3           测试2
          5           前端组
         5           美工
2 查询结果 查部门ID=2的所有下级部门和本级

Id          Pid         DeptName                                           lvl

----------- ----------- -------------------------------------------------- -----------

1           研发部                                               0

2           小组1                                                1

2           小组2                                                1

5           前端组                                               2

5           美工                                                  2

(5 行受影响)

3 原理(摘自网上)

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

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

转载于:https://www.cnblogs.com/nxxshxf/p/5590911.html

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. SQL递归查询知多少

    最近工作中遇到了一个问题,需要根据保存的流程数据,构建流程图.数据库中保存的流程数据是树形结构的,表结构及数据如下图: 仔细观察表结构,会发现其树形结构的特点: FFIRSTNODE:标记是否为根节点 ...

  9. SQL递归查询实现组织机构树

    系统用到的组织机构树,要实现对当前节点以及其子节点的查询,数据库SQL要用到递归查询,这也是我第一次接触SQL的递归查询. 先说一下什么是递归查询,简单说来是将一个树状结构存储在一张表里,比如一个表中 ...

最新文章

  1. 创建型模式——Factory Method(未完)
  2. 用DOS命令来运行Java代码
  3. linux系统扩展名大全,Linux系统文件扩展名学习
  4. mysql ERROR 1045 和2058时(28000): 错误解决办法
  5. kangle虚拟主机空间销售网站源码
  6. php判断微信版本,判断是否是微信访问并获取版本号
  7. 黑马程序员:java基础学习——数组
  8. 【基础】集成学习 (Ensemble Learning)
  9. Mac是否需要始终打开Time Machine驱动器?
  10. 【Prison Break】第二天(3.28)
  11. Visio画正态分布曲线
  12. 返利系统功能详细介绍
  13. sqlserver 2000 sp3补丁
  14. 梦想近在眼前却遥不可及
  15. android8虚拟键布局,Android 虚拟按键在不同版本上的位置问题
  16. WIN10教育版激活方法
  17. 以下不是python语言合法变量_违法行为的客体是指法律所保护的而为违法行为所侵害的:()...
  18. GridView控件 Image控件 与图片的二进制数据库存储和显示
  19. vue中directives的用法
  20. html文字注释,css如何注释?

热门文章

  1. php函数用粗体字显示,用来设置粗体字的属性是什么
  2. radiobutton怎么变成竖排_衣服如此凌乱?怎么能忍受的了?衣柜收纳,试试这些神器吧...
  3. EasyUI 扩展自定义EasyUI校验规则 验证规则(常用的)
  4. 玩转mini2440开发板之【tekkamanninja版的u-boot的编译和烧录】
  5. C51 printf修改如何能打印到不同的设备呢?
  6. 树莓派gparted启动失败解决方法
  7. make modules 和 make modules_install
  8. php 终止程序的方法——return、exit()、die()
  9. 贷款中介市场要变天了吗?
  10. 《北京作家》2010年第2期,总第4期出版