我正在学习SQL,并且很难理解以下递归SQL语句。
WITH RECURSIVE t(n) AS (
SELECT 1
UNION ALL
SELECT n+1 FROM t WHERE n < 100
)
SELECT sum(n) FROM t;
Run Code Online (Sandbox Code Playgroud)
n和t来自SELECT sum(n) FROM t;什么?据我了解,n是一个数,t是一个集合。我对吗?
另外,此语句中如何触发递归?
您使用的语法看起来像 Postgres。SQL 中的“递归”并不是真正的递归,而是迭代。你的说法是:
WITH RECURSIVE t(n) AS (
SELECT 1
UNION ALL
SELECT n+1 FROM t WHERE n < 100
)
SELECT sum(n) FROM t;
Run Code Online (Sandbox Code Playgroud)
for 语句t被评估为:
select 1)。n < 100)。完成此操作后,t子查询就完成了,可以评估最终语句。