在这段SQL递归代码中,UNION ALL在这里做什么?

问题描述 投票:0回答:1
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将它们合并为一个?

sql
1个回答
0
投票

这是递归CTE。第一个选择是基本情况,它为number列设置了值1。在UNION ALL之后发生的递归选择选择1加上number中的先前值(其值将从1)。数据库将使用递归选择填充CTE,直到WHERE子句失败为止,number子句达到50时会发生这种情况。

© www.soinside.com 2019 - 2024. All rights reserved.