相关文章推荐
憨厚的小马驹  ·  java ...·  2 周前    · 
干练的香槟  ·  MySql递归查询父级/子级数据_mysql ...·  1 周前    · 
销魂的自行车  ·  mysql根据父节点递归查询所有子节点,Li ...·  1 周前    · 
高大的豆浆  ·  PST文件格式解读--PST文件的逻辑结构_ ...·  4 月前    · 
酒量大的篮球  ·  数据库表 - Win32 apps | ...·  1 年前    · 
跑龙套的葫芦  ·  C 标准库 – <string.h> | 菜鸟教程·  1 年前    · 
求醉的斑马  ·  AI 应用丨当AIGC的风吹到了跨境电商 - 知乎·  1 年前    · 
高大的小熊猫  ·  如何使Chrome能够双击关闭标签页_百度知道·  1 年前    · 
Code  ›  MYSQL 8.019 CTE 递归查询怎么解决死循环三种方法开发者社区
mysql 递归 递归调用
https://cloud.tencent.com/developer/article/1662950
玩滑板的皮带
1 年前
作者头像
AustinDatabases
0 篇文章

MYSQL 8.019 CTE 递归查询怎么解决死循环三种方法

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > AustinDatabases > MYSQL 8.019 CTE 递归查询怎么解决死循环三种方法

MYSQL 8.019 CTE 递归查询怎么解决死循环三种方法

作者头像
AustinDatabases
发布 于 2020-07-16 14:14:14
1.1K 0
发布 于 2020-07-16 14:14:14
举报

MYSQL CTE 是8.0 引入的SQL 查询的一种功能,通过CTE 可以将复杂的SQL 变得简单,便于分析和查询. 其中CTE 有一种功能递归, 并且牵扯到递归就会有一个问题的提出,就是无限递归的问题.

下面是一个递归死循环的例子

这里先解释一下CTE 递归

1 递归查询至少包含两个子查询, 第一个查询的目的是设置递归的初始值

2 第二个查询成为递归查询,第二个查询调用第一个查询的结果,然后开始循环

之间通过union all 来连接.

递归查询中,当查询的结果不匹配,或超过了递归次数就会停止. 或者在执行是系统发现是死循环则会在设定好的最大cte_max_recursion_depth 后终止查询.

递归查询中出现3636的问题,分为两种

1 数据出现问题 (这是引起递归出现问题的常见原因)

2 SQL 递归的撰写有问题

根据1 出现问题的概率比较大,并且比较难以排查, 这里就需要在写SQL 的时候,添加一些语句来避免递归出现问题.

1 方法一, 使用distinct ,通过在union 后面添加distinct 来将重复的数据去掉,大部分死循环是因为有重复的数据,这样可以查出数据. 但问题是在 WORKBENCH 中是可以的,但将语句在 MYSQL 程序中是报错的,这点我也没法解释.

2 方法二 在MYSQL 8.109 引入了 LIMIT 语句,通过LIMIT 来限制输出数据的数量,投机取巧的避免了部分 3636 的错误

这个方式在workbench 和 MYSQL 命令符下都是OK 的.

实际当中,可能用的最多的是另外一种方式,自动设置让死循环结束

WITH RECURSIVE cte_all AS
  SELECT dname AS Child
  FROM cte_test
  WHERE rname='Tim' 
  UNION all
  SELECT r.dname
  FROM cte_test r, cte_all d
 
推荐文章
憨厚的小马驹  ·  java 递归获取目录下所有文件_递归文件夹获取所有kava文件
2 周前
干练的香槟  ·  MySql递归查询父级/子级数据_mysql 根据parentid递归查询所有下级
1 周前
销魂的自行车  ·  mysql根据父节点递归查询所有子节点,List转树形结构工具类_mysql 查询根据父节点查询所有子节点
1 周前
高大的豆浆  ·  PST文件格式解读--PST文件的逻辑结构_intitle:“pst文件夹”-CSDN博客
4 月前
酒量大的篮球  ·  数据库表 - Win32 apps | Microsoft Learn
1 年前
跑龙套的葫芦  ·  C 标准库 – <string.h> | 菜鸟教程
1 年前
求醉的斑马  ·  AI 应用丨当AIGC的风吹到了跨境电商 - 知乎
1 年前
高大的小熊猫  ·  如何使Chrome能够双击关闭标签页_百度知道
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   藏经阁   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号