请教一个 MySQL 查询的实现

2022-02-08 10:53:37 +08:00
 cuipai

版本 8.0 以上 表有两列数据;作业名,依赖作业名,无主键。 正确示例数据: jobName dependencyJobName jobA jobB jobA jobC jobC jobD

我想要通过 sql 查询是否有循环依赖,即 A 依赖与 A , 比如:A--》 B--》 C--》 A jobName dependencyJobName jobA jobB jobB jobC jobC jobA

目前是通过 Java 递归实现的,效率很差,请问下能否通过 sql 实现。

2167 次点击
所在节点    MySQL
4 条回复
seanzxx
2022-02-08 11:13:26 +08:00
xuanbg
2022-02-08 11:24:12 +08:00
mysql8 可以支持递归查询,但效率也很低。楼主你这个问题其实就是判断图 /树的问题,所以还是用数学方法来吧。
yidinghe
2022-02-08 11:30:31 +08:00
如果你想查询整个表里面是否有循环依赖,这个做不到;
如果想查询具体某个 job 的依赖链中是否有循环依赖,还是可以的。
leonhao
2022-02-08 11:53:24 +08:00
recursive cte

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/832384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX