RPL 作为一个具有以下三列的虚拟表:
表结构 : PID、ID 和 name。
WITH 子句内的第一个 SELECT 语句是初始化表。它只执行一次。它的结果形成虚拟表的初始内容以作为递归的种子。在上面的示例中,种子是 PID 为 8 的一行或多行。
第二个 SELECT 语句执行多次。将种子作为输入(JOIN 中的辅助表)传递给第二个 SELECT 语句以产生下一个行集合。将 JOIN 的结果添加(UNION ALL)到虚拟表的当前内容中,并放回到其中以形成用于下一次传递的输入。只要有行产生,这个过程就会继续。
========
代码:
WITH RPL (PID, ID, name) AS
(
SELECT ROOT.PID, ROOT.ID, ROOT.Name
FROM regr ROOT
WHERE ROOT.PID = 8
UNION ALL
SELECT CHILD.PID, CHILD.ID, CHILD.Name
FROM RPL PARENT, regr CHILD
WHERE PARENT.ID = CHILD.PID
)
SELECT DISTINCT PID, ID, Name
FROM RPL
ORDER BY PID, ID, Name
虚拟表上最后的 SELECT 允许我们选择递归查询所产生的所有行或仅部分行
分享到:
相关推荐
DB2递归.docx 1. 递归查询和初始查询结果必须包含相同数量的数据列; 2. 递归查询和初始查询结果数据列的、长度等必须一致; 3. 递归查询不能包含 GROUP BY 或者 HAVING 子句; 4. 递归查询不能包含 Outer Join...
NULL 博文链接:https://flysky7931.iteye.com/blog/706171
sql 2005中用CTE实现递归的很好很易懂很基础的例子讲解。
DB2循环递归实例 自己编写的 比较有用的
实现ORACLE 的CONNECT by。可以实现一些难以在db2上实现的递归操作
递归查询菜单树,支持mysql,oracle,含表结构,递归查询菜单,支持mysql,oracle,含表结构递归查询菜单。
Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws,group_concat 函数 MySQL 自定义函数 手动实现 MySQL 递归查询 Oracle 递归查询 在 Oracle 中是通过 start ...
DNS迭代查询和递归查询的区别.docx
树PostgreSQL的递归查询树PostgreSQL的递归查询树PostgreSQL的递归查询
这是一个springboot架构搭建的一个整合mybatis递归查询的demo,其中整合了分布式事物jta,mybatis的分页插件等
主要介绍了MyBatis之自查询使用递归实现 N级联动效果,本文给大家分享两种实现方式,需要的的朋友参考下吧
sql server 2008 递归查询所有上级或下级数据
实际开发中碰到一个使用hibernate递归查询的问题。我解决了发出来给大家一起分享
10.2.0.3版本有的递归语句查询无结果,但用with改造后,正确显示结果。
完美解决多级递归查询,支持多种数据库,可以参照类似写法。有的数据库还是不支持的,但有类似的写法如oracle
MySQL实现递归查询的三种方式.rar
MySQL递归查询,oracle在迁移成mysql后难免会遇到的问题。
mysql递归查询.txt,里面写了mysql递归查询的例子,方便需要的朋友使用,可读性强,简单实用
主要给大家介绍了关于Oracle递归查询start with connect by prior、的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
存储过程递归查询,可适合于无限级分类时查找,找了很久才找到的好源码。