文档解释
Error number: 3574; Symbol: ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST; SQLSTATE: HY000
Message: Recursive Common Table Expression ‘%s’ should have one or more non-recursive query blocks followed by one or more recursive ones
错误说明:
ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST,这是一个MySQL错误码,在使用递归查询表表达式(CTE)时报出。它表明你必须在使用递归CTE之前先使用非递归CTE,以保证递归查询表表达式的正确性。
常见案例
当尝试使用CTE进行递归查询时,MySQL就会报出ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST错误,而将非递归先行查询写在递归查询之前,由于无法正常查询,就会报出ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST错误。
解决方法:
要解决 ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST 的错误,首先需要理解CTE语法,如果使用了递归CTE,则必须先使用非递归CTE。为了使查询正确,请将非递归CTE条件放在递归CTE中,并且保证非递归CTE已被正确查询。此外,必须确保用于创建CTE的表或子查询已被正确存在,否则不会正确查询结果,也会报出 ER_CTE_RECURSIVE_REQUIRES_NONRECURSIVE_FIRST 的错误。