Error number: 3573; Symbol: ER_CTE_RECURSIVE_REQUIRES_UNION; SQLSTATE: HY000
Message: Recursive Common Table Expression ‘%s’ should contain a UNION
ER_CTE_RECURSIVE_REQUIRES_UNION错误指的是在使用递归查询(Recursive CTE)时联合子查询是必需的。
错误定义 :
ER_CTE_RECURSIVE_REQUIRES_UNION是MySQL定义的一个表示一个错误码。这个错误表示用户在使用递归查询时没有正确地包含联合子查询。使用递归查询时,必须将联合子查询与递归子句整合在一起。
此错误通常发生在试图在 SELECT 语句内使用 WITH 子句和递归子句时,而不包含用于联合所有子查询的 UNION 操作符。
解决方法:
为了解决该错误,必须将 WITH 和 RECURSIVE 子句与联合子句一起使用。例如, WITH rec_cte(n)AS(SELECT 1) UNION ALL SELECT n+1 FROM rec_cte)SELECT * FROM rec_cte;
另外,出现此错误时,也可以考虑将代码更改为一个普通 SELECT 语句,计算结果不会改变。因此,更改 Select 的完整语法可能是一个更为简单的解决方法。