WITH counting_numbers as (
SELECT
-- Initialize number
1 AS number
UNION ALL
SELECT
-- Increment number by 1
number+1
FROM counting_numbers
-- Set the termination condition
WHERE number < 50)
如果我没记错的话,每个循环产生2个输出。如果是这样,UNION ALL将它们合并为一个?
这是递归CTE。第一个选择是基本情况,它为number
列设置了值1。在UNION ALL
之后发生的递归选择选择1加上number
中的先前值(其值将从1)。数据库将使用递归选择填充CTE,直到WHERE
子句失败为止,number
子句达到50时会发生这种情况。