MYSQL CTE 是8.0 引入的SQL 查询的一种功能,通过CTE 可以将复杂的SQL 变得简单,便于分析和查询....其中CTE 有一种功能递归, 并且牵扯到递归就会有一个问题的提出,就是无限递归的问题....下面是一个递归死循环的例子
这里先解释一下CTE 递归
1 递归查询至少包含两个子查询, 第一个查询的目的是设置递归的初始值
2 第二个查询成为递归查询,第二个查询调用第一个查询的结果,然后开始循环...递归查询中,当查询的结果不匹配,或超过了递归次数就会停止. 或者在执行是系统发现是死循环则会在设定好的最大cte_max_recursion_depth 后终止查询....实际当中,可能用的最多的是另外一种方式,自动设置让死循环结束
WITH RECURSIVE cte_all AS
(
SELECT dname AS Child
FROM cte_test