大家好,今天给大家带来递归CTE(Common Table Expression)。这是我最近遇到的一个功能,我想用一个简单的例子来分享这个。但首先,非递归 CTE 和递归 CTE 有什么区别?
非递归 CTE:
这些是每个人都知道的 CTE。它用于保存子查询的临时结果集。它是使用 WITH 子句创建的,并且 CTE 的范围仅限于当前查询。它还提高了复杂查询或子查询的可读性和协作性。
递归 CTE:
递归 CTE 是引用自身的 CTE。
让我们看一个简单的递归示例:
在 CTE 内部,第一个查询将是我们的基本查询,它将初始化我们的 N。然后在下一个查询中,我们有递归执行,我们从所在的 CTE 调用 N+1。我们使用 where 将递归设置为 10 . 查看结果:
警告:我已经进行了一些测试,显然