【发布时间】:2018-06-08 11:47:36
【问题描述】:
我知道锚是必要的,这是有道理的。而且我知道需要UNION ALL,如果您的递归CTE 没有,它就是行不通的......但我找不到一个很好的解释为什么会这样。所有文档都只是说明您需要它。
为什么不能在递归查询中使用UNION 而不是UNION ALL?似乎在更深层次的递归中不包含重复项是个好主意,不是吗?我想,类似的东西应该已经在幕后工作了。
【问题讨论】:
-
我们可以看看一些代码吗,因为我不明白你的意思。
-
反对者是否愿意发表评论?
-
@Sami 递归 CTE 的定义需要锚查询
UNION ALL'd 到递归查询。我在问为什么它需要 UNION ALL 而不是 UNION,我想优化器可能已经以某种形式在做。 -
因为这是语法。如果您的代码有问题,有重复的项目,请发布
-
@Ezin82 我的代码没有问题,而且我知道语法。我知道如何在 SQL 中递归。我在问为什么当递归查询似乎想要控制重复项以保持一定程度的性能时,为什么需要这种机制,即这是任意选择的,是否尝试保持一些 ANSI SQL 兼容性,是否存在技术限制,等
标签: sql-server tsql recursion common-table-expression