【发布时间】:2014-07-04 02:57:59
【问题描述】:
我有一个带有这样的表的 MySQL 数据库:
|编号 |重定向 | +--------+----------+ | 1 |空 | | 2 | 3 | | 3 |空 | | 4 | 5 | | 5 | 6 | | 6 | 8 | | 7 |空 | | 8 |空 | +--------+----------+我需要为递归解析重定向创建查询。 所以我可以得到结果:
1 1 2 3 3 3 4 8 5 8 6 8 7 7 8 8谢谢
【问题讨论】:
-
OP的从起始ID到左节点之后,如果没有叶子节点,则自引用。
-
我不确定它是否可以通过单个查询来解决,但为什么不在数据库输入时解决它。
-
@Satwik Nadkarny:这确实有道理。这些行“必须为 8”,因为 8 是以 4 开头的路径的终止节点,它也是以 5 开头并以 6 开头的路径的终止节点。
-
存储的过程可以调用自身(递归)。存储过程递归由系统变量
max_sp_recursion_depth控制。存储的 函数 不能是递归的,因此您可以创建一个调用递归存储过程的函数。您也不一定必须使用递归。您可以在存储函数或过程中使用WHILE循环。查看类似内容:stackoverflow.com/questions/3438111/…