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递归查询完成了.
相关推荐
递归查询菜单树,支持mysql,oracle,含表结构,递归查询菜单,支持mysql,oracle,含表结构递归查询菜单。
这是一个springboot架构搭建的一个整合mybatis递归查询的demo,其中整合了分布式事物jta,mybatis的分页插件等
DNS迭代查询和递归查询的区别.docx
MySQL实现递归查询的三种方式.rar
sql server 2008 递归查询所有上级或下级数据
树PostgreSQL的递归查询树PostgreSQL的递归查询树PostgreSQL的递归查询
oracle 如何递归查询父子关系。经常用于构造树结构
存储过程递归查询,可适合于无限级分类时查找,找了很久才找到的好源码。
实际开发中碰到一个使用hibernate递归查询的问题。我解决了发出来给大家一起分享
mysql递归查询.txt,里面写了mysql递归查询的例子,方便需要的朋友使用,可读性强,简单实用
MySQL递归查询,oracle在迁移成mysql后难免会遇到的问题。
oracle递归查询的例子,一个从创建表到查询的完整的例子。oralce递归查询是一个很实用的语句,在sqlserver目前还没有,但是语法常常不容易被我们记住,所以本人总结了一下,写到文档里了。
Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...
SQL 2005树形表非循环递归查询 利用SQL 2005的新特性查询树形表,在SQL2000中此方法不可用.
sql 2005中用CTE实现递归的很好很易懂很基础的例子讲解。
给定一个节点ID,查询此节点下的全部节点,并将结果集保存在临时表中
完美解决多级递归查询,支持多种数据库,可以参照类似写法。有的数据库还是不支持的,但有类似的写法如oracle
oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称
* 根据等级查询类目树 * * @param level * @return */ @Override public List<CategoryTreeDTO> queryCategoryTree(Integer level) { //查询当前级别下类目 List<CategoryDO> list = categoryDAO.list...