`
gwh_08
  • 浏览: 335637 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

递归查询

 
阅读更多

CTE递归原理:

     递归CTE是由两个最小查询构建的.第一个是定位成员(Anchor Member,AM),它是一个非递归查询,第二个是递归成员(Recursive Member,RM),它是递归查询.在CTE括号中(AS 子句之后),定义独立查询或引用回相同CTE的查询,AM与RM由UNION ALL语句分隔.AM紧被调用一次,RM将被重复调用,直到查询不在返回数据行为止.可以使用UNION或UNION ALL运算符彼此追加多个AM,具体取决于是否希望删除重复数据(必须使用UNION ALL运算符来追加递归成员).语法如下:

;WITH  SimpleRecursive ( id, pid )
AS ( SELECT id, pid  from  t_table 
	WHERE id = @id ---根节点
	UNION ALL
	SELECT  t.id, t.pid
	FROM  t_table as t
	INNER JOIN SimpleRecursive A ON (t.pid = A.id)
	)
SELECT  id,pid FROM SimpleRecursive 
OPTION(MAXRECURSION 25) 

 根据设计,递归成员将一直查找子记录,并可以无限循环.如果您怀疑将会进行许多循环,并希望限制递归调用次数,可以使用OPTION子句在外部查询的后面指定MAXRECURSION选项.

OPTION(MAXRECURSION 25)

 

这一选项将使sql server2005在cte出现指定限制时产生一条错误.默认情况下,限制为100(即省略该选项时).要不想指定选项.必须将MAXRECURSION设为0.

ok,CTE递归查询完成了.

分享到:
评论
2 楼 gwh_08 2014-11-19  
wswangyj 写道
伟华很勤奋啊

呵呵,就是感觉有记录的必要就记下了,向王哥学习。
1 楼 wswangyj 2014-11-18  
伟华很勤奋啊

相关推荐

    mybatis递归查询菜单树

    在本示例中,"mybatis递归查询菜单树"是一个基于SpringBoot架构的应用,它演示了如何利用MyBatis进行递归查询来构建菜单树结构。此外,这个项目还集成了JTA(Java Transaction API)以支持分布式事务处理,并使用了...

    DNS迭代查询和递归查询的区别.docx

    "DNS 迭代查询和递归查询的区别" DNS(Domain Name System)是 Internet 中的一个基础设施,提供域名到 IP 地址的映射服务。在 DNS 解析过程中,查询类型是一个关键概念,有两种主要的查询类型:迭代查询和递归查询...

    存储过程递归查询

    ### 存储过程递归查询知识点详解 #### 一、递归查询概念 在数据库管理中,递归查询主要用于处理层级结构数据,如组织架构、产品分类等。递归查询可以方便地遍历多级关系,实现对无限层级的数据进行查询。 #### 二...

    递归查询菜单树,支持mysql,oracle

    这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...

    sql server 2008 递归查询所有上级或下级数据

    在SQL Server 2008中实现递归查询来获取所有上级或下级数据是一项非常实用的技术,尤其是在处理具有层次结构的数据时。本篇将详细解释如何利用Common Table Expressions (CTE)来完成这样的查询,并对提供的示例代码...

    SQL 递归查询,并将结果集保存在临时表中

    在SQL中,递归查询是一种强大的工具,常用于处理层级数据,例如组织结构、树形菜单等。在给定的场景中,我们需要根据一个特定的节点ID查询出该节点及其所有子节点,并将这些结果存储在一个临时表中。以下是实现这一...

    MySQL实现递归查询的三种方式.rar

    在数据库管理中,递归查询是一种处理层次结构数据的有效方法,尤其在关系型数据库如MySQL中,递归查询可以帮助我们解决树形结构或有层级关系的数据检索问题。本资料主要探讨了MySQL中实现递归查询的三种常见方法:自...

    hibernate实现递归查询

    本文将深入探讨如何使用Hibernate实现递归查询,以解决在数据层次结构中涉及父节点与子节点关系时的问题。递归查询通常用于处理树形结构的数据,例如组织结构、菜单系统或者文件目录等。 首先,我们需要了解递归的...

    MySQL递归查询

    MySQL 递归查询实现方法 MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 ...

    mysql递归查询.txt

    ### MySQL 递归查询知识点详解 #### 一、MySQL 递归查询概述 在数据库查询中,递归查询主要用于处理层级或树形结构的数据。这类数据的特点是每一项记录不仅包含自身的信息,还可能与其他记录形成上下级关系。MySQL...

    sql递归查询实例2

    根据提供的信息,我们可以深入探讨如何使用SQL递归查询来获取所有属于特定`upperid`的数据及其子树。这里的关键在于理解递归查询的工作原理,并通过一个具体的例子来演示这一过程。 ### SQL递归查询概念 在关系型...

    oracle递归查询的例子

    ### Oracle 递归查询详解及实例 #### 一、引言 在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于...

    在db2和oracle中的对树的递归查询语句

    本文将深入探讨这两个数据库系统中如何使用递归查询语句来操作树形结构。 首先,让我们理解什么是树形结构。在数据存储中,树形结构是一种层次化的数据模型,它由节点(或称为记录)组成,每个节点可以有零个或多...

    树PostgreSQL的递归查询

    树PostgreSQL的递归查询树PostgreSQL的递归查询树PostgreSQL的递归查询

    递归查询父子关系记录 oracle

    oracle 如何递归查询父子关系。经常用于构造树结构

    数据库设计之递归树查询

    在数据库设计中,递归查询是一种处理层级关系数据的关键技术,尤其在存在多级关联的数据结构时显得尤为重要。本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用...

    c# 基于文件目录的递归查询显示 !

    以上就是使用C#进行基于文件目录的递归查询和显示的基本步骤。这种方法在需要遍历文件系统并呈现层次结构的场合非常有用,例如在文件管理器应用或搜索功能中。通过这种方式,你可以轻松地展示复杂的目录结构,让用户...

    文件夹递归查询所有文件夹内容替换目标文本

    "文件夹递归查询所有文件夹内容替换目标文本"是一个解决此类问题的实用方法,它通过一个批处理(bat)文件执行Java(JAVA)编写的jar包来实现。这种方法的优点在于,它不需要依赖IDE(如IntelliJ IDEA或Eclipse)...

Global site tag (gtag.js) - Google Analytics