递归SQL查询如何终止以及如何计算它们?
我浏览了下面的代码 我无法理解计算机如何评估这些代码,从而使cte_计数永远终止 在我看来,它是这样工作的:递归SQL查询如何终止以及如何计算它们?,sql,recursion,Sql,Recursion,我浏览了下面的代码 我无法理解计算机如何评估这些代码,从而使cte_计数永远终止 在我看来,它是这样工作的: cte_count是一个表,它包含一个名为n的列,其中包含1和(递归成员)的结果 首先:n+1应该是什么意思?就我而言,n是一列的名称 假设n+1只是以某种方式增加了一个计数器: 第二,在之前评估cte_计数时,如何检查终止条件 我希望有人能更清楚地说明这些查询是如何工作的 我无法理解计算机如何评估这些代码,从而使cte_计数永远终止 简而言之,它不知道。 递归CTE最多只能递归327
MAXRECURSION
属性设置最大递归的确切数目
是N是列的名称。递归查询部分
select n+1 from cte_count where n<50
从cte_count中选择n+1,其中n其中n<50
终止递归。n+1
是返回增加值的表达式,仍然作为列名n返回(如UNION ALL的first SELECT中所指定的。=每次迭代时n<50得到检查???。因此n+1意味着n中的每个元素增加1?这是否进一步意味着SQL确实在计算这些表达式需要32767次递归?@Niclas我想回答这个问题,但后来我找到了一个与postgres SQL相关的极好答案,但它确实解释了逻辑
select n+1 as n from cte_count where n<50