我在表中有一些初始行。我想用递归调用来修改它们。在我的示例代码中,这个函数是一个简单的乘以 2,我想执行 5 次:
WITH RECURSIVE cte (n,v) AS
(
-- initial values
SELECT 0,2
UNION ALL
SELECT 0,3
UNION ALL
-- generator
SELECT n + 1, v * 2 FROM cte WHERE n < 5
)
SELECT v FROM cte where n = 5;
它有效,但我的问题是它只在查询结束时过滤掉不需要的值。如果我从更多的行开始,它会降低性能,因为我应该在内存中有更多的行。是否可以仅在每次迭代中保留最新值?
SQLFiddle:http ://sqlfiddle.com/#!5/9eecb7/6761