递归CTE是SQL SERVER 2005中重要的增强之一。一般我们在处理树,图和层次结构的问题时需要用到递归查询。

CTE的语法如下

1 WITH CTE AS
2 (
3     SELECT EmpId, ReportTo, FName FROM Employ WHERE EmpId=1
4     UNION ALL
5     SELECT emp.EmpId, emp.ReportTo, emp.FName FROM CTE JOIN Employ as emp ON CTE.EmpId=emp.ReportTo
6 )

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

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

 1 USE AdventureWorks;
 2 GO
 3 --Creates an infinite loop
 4 WITH cte (EmployeeID, ManagerID, Title) as
 5 (
 6     SELECT EmployeeID, ManagerID, Title
 7     FROM HumanResources.Employee
 8     WHERE ManagerID IS NOT NULL
 9   UNION ALL
10     SELECT cte.EmployeeID, cte.ManagerID, cte.Title
11     FROM cte 
12     JOIN  HumanResources.Employee AS e 
13         ON cte.ManagerID = e.EmployeeID
14 )
15 --Uses MAXRECURSION to limit the recursive levels to 2
16 SELECT EmployeeID, ManagerID, Title
17 FROM cte
18 OPTION (MAXRECURSION 2);
19 GO
本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2012/02/20/2359214.html,如需转载请自行联系原作者

【转】Sql递归查询相关推荐

  1. SQL递归查询(with as)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. SQL递归查询知多少

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

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

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

最新文章

  1. Mac自定义终端的欢迎页
  2. Css的filter常用滤波器属性及语句大全
  3. python Intel Realsense D435 多线程资源分配问题(卡住、卡死)
  4. Scikit-Learn 机器学习笔记 -- 模型训练
  5. PLT redirection through shared object injection into a running process
  6. [导入]C#好书盘点【月儿原创】
  7. 线程安全的atomic wrapper classes例子
  8. BIM族库下载——Revit灯具族库
  9. PandoraBox潘多拉无线桥接(中继)使用方法和无法使用解决----小米mini小米3路由
  10. linux卸载nvdia驱动_Ubuntu 卸载 Nvidia 驱动和安装最新驱动
  11. Android 常用布局介绍
  12. android 实时同步短信,备份Android短信的4种方法你最好知道
  13. excel表格如何换行
  14. 【实用工具01】免费的比较工具Meld
  15. Qt - QLabel设置字体颜色
  16. 反相器的Cadence仿真
  17. note:记各种资源
  18. 金融day03 —— 银行支付结算、银行资产业务
  19. 短线绝招--潜龙出海
  20. acm-LCY算法入门培训-第0讲

热门文章

  1. SoapUI接口测试之实战运用操作(五)
  2. finally不管有没有错都会运行 finally 块用于清除 try 块中分配的任何资源,以及运行任何即使在发生异常时也必须执行的代码...
  3. 在OpenStack虚拟机实例中创建swap分区的一种方法
  4. DataGridView的行的字体颜色变化
  5. 数据库备份与恢复 之四 选择数据库还原方案
  6. 本周Asp.net源码更新(6.25-6.29)
  7. 有谁还遇到同样的问题?
  8. 如何使用PDF expert在Mac上给PDF调整页面顺序?
  9. Mac详解:关于macOS 关键的几个文件夹的作用和层级逻辑
  10. 在RHEL5下构建LAMP网站服务平台之MySQL、PHP的安装与配置