【发布时间】:2020-10-11 23:09:47
【问题描述】:
我有关于可变数据类型信息的表格。名为inheritance 的表,包含derived 和base 列以及以下示例数据;
derived | base
Double | Number
Int | Number
Int64 | Int
Number | Object
正如所见,可能有一些基础数据类型也属于派生列。但是保证没有循环依赖。我的目标是将输出作为两列,derived 和 base,其中 base 列是对应派生类型的最终根基元素。
例如,Int64 的基数为 Int。我正在尝试将递归与 MySql 版本> 8.0 一起使用。这是我的尝试;
WITH RECURSIVE hierarchy AS (
SELECT
derived,
base
FROM inheritance
UNION ALL
SELECT
inheritance.derived,
inheritance.base
FROM inheritance,hierarchy
WHERE inheritance.derived = hierarchy.base)
SELECT *
FROM hierarchy;
我的终止宽恕似乎有一个错误,因此我收到以下错误;
ERROR 3636 (HY000) at line 715: Recursive query aborted after 1001 iterations. Try increasing @@cte_max_recursion_depth to a larger value..
请注意,这只是示例数据,因此我正在尝试编写一个通用递归查询。感谢您的帮助/建议。
【问题讨论】:
-
我测试了您显示的内容,但没有出现错误。我正在使用 MySQL 8.0.21。您使用的是哪个版本?
-
我猜你的数据与你展示的四行样本数据不同,你的继承中可能有一个循环。
-
请提供样本数据和期望的结果。
标签: mysql sql hierarchical-data recursive-query