定义:
递归SQL在数据库中,通过CTE(Common Table Expression)来实现。递归SQL由递归CTE以及对递归CTE结果的查询组成。
简而言之,如果CTE中的FULL SELECT 在FROM 子句中引用到CTE本身,就是递归CTE。递归CTE由3部分组成:
1、初始查询
初始查询是CTE中对基本表进行查询的部分。CTE定义中的第一个FULLSELECT毕须不包含对CTE自身的应用。
2、递归查询
递归查询就是通过对CTE自身的引用,启动递归逻辑的查询。递归查询需要遵循以下几点:
- 递归查询和初始查询结果必须包含相同数量的数据列;
- 递归查询和初始查询结果数据列的、长度等必须一致;
- 递归查询不能包含 GROUP BY 或者 HAVING 子句;
- 递归查询不能包含 Outer Join;
- 递归查询不能包含子查询 (Subquery);
- 递归查询必须用 UNION ALL 联结。
终止条件通常是隐形的,即如果前一次递归查询返回的结果集为空,则终止递归;也可以在递归查询中设定终止条件,如限定递归查询的深度等。
原文:
原文地址点击打开链接,如果你已经了解过递归SQL,那么可以直接看下面的实例。如果不熟悉,建议直接看原文。
实例:
1、
2、
3、
4、
5、
6、
7、
8、
9、