Sql 递归查询终止符

Sql 递归查询终止符,sql,Sql,什么是递归查询的终止符? 根据: 递归执行的语义如下: 将CTE表达式拆分为锚定成员和递归成员。 运行创建第一个调用或基本结果集(T0)的锚定成员。 以Ti作为输入,Ti+1作为输出运行递归成员。 重复步骤3,直到返回一个空集。 返回结果集。这是一个从T0到Tn的联盟 这是正确的吗 终止符是否应该是:“没有返回新的条目”?这对于注释来说有点长 递归CTE并不像其他编程语言中使用的术语那样是真正的“递归的”。当我想到递归函数时,我想到的是保存局部变量和为下一次函数调用创建新框架,等等 相反,“递归

什么是递归查询的终止符?
根据:

递归执行的语义如下:
将CTE表达式拆分为锚定成员和递归成员。
运行创建第一个调用或基本结果集(T0)的锚定成员。
以Ti作为输入,Ti+1作为输出运行递归成员。
重复步骤3,直到返回一个空集。
返回结果集。这是一个从T0到Tn的联盟

这是正确的吗


终止符是否应该是:“没有返回新的条目”?

这对于注释来说有点长

递归CTE并不像其他编程语言中使用的术语那样是真正的“递归的”。当我想到递归函数时,我想到的是保存局部变量和为下一次函数调用创建新框架,等等

相反,“递归”CTE实际上是归纳的。它们从“0”——锚点——开始,并将递归成员反复应用于在每次迭代中创建的结果集的新行。由于归纳步骤应用于新行,因此当没有新行时,归纳步骤停止


因此,当返回空集时,递归停止的解释是对所发生情况的恰当描述。但是,递归步骤仅适用于新行。

听起来很正确。如果没有返回行,则递归停止,在这种情况下,没有下一级的输入。您可能会多次返回同一行(但这可能会导致无休止的递归)。非常感谢。这很有帮助。“递归”这个词真的把我弄糊涂了。