递归查询中,当查询的结果不匹配,或超过了递归次数就会停止. 或者在执行是系统发现是死循环则会在设定好的最大cte_max_recursion_depth 后终止查询....但问题是在 WORKBENCH 中是可以的,但将语句在 MYSQL 程序中是报错的,这点我也没法解释.
2 方法二 在MYSQL 8.109 引入了 LIMIT 语句,通过LIMIT 来限制输出数据的数量...)
SELECT /*+ MAX_EXECUTION_TIME(1000) */ * FROM cte_all;
这样的写法在workbench 是OK 的,但在MYSQL 命令行中是还是不可以
当然绕来绕去...,最关键的还是修复导致死循环的数据
在修复数据后,在此执行查询,问题解决....但在SQL 的撰写中如果业务逻辑合适, 递归会将SQL 写的比较简单,但需要给定的数据要符合一定的规律,以上的方式均是想通过一定方式来规避由于数据问题,产生的递归问题.