以下查询的行为与我对CTE的理解有所不同,有人可以详细说明为什么会这样吗?
with cte (n) as
(
select 1
union all
select n + 1 from cte where n<10
)
select * from cte
我期望以下输出:
1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10
但我得到:
1,2,3,4,5,6,7,8,9,10
为什么?
CTE本质上是可以引用自身的可重用子查询,因此您的最终查询等同于:
SELECT 1
UNION ALL (SELECT 2
UNION ALL (SELECT 3 ...
直到n
达到10。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句