有没有数据库支持相互递归查询

问题描述 投票:0回答:2

我尝试过sql server,db2,postgreSQL和Mysql。有些支持递归的基本功能,但都不支持这样的相互递归:

WITH RECURSIVE
x (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM y WHERE id < 5),
y (id) AS (SELECT 1 UNION ALL SELECT id+1 FROM x WHERE id < 5)
SELECT * FROM x;
sql database
2个回答
0
投票

这是可能的:只需使用

second cte
(
y (id)
) 作为 子查询

WITH 
x (id) AS (SELECT 1 
           UNION ALL 
           SELECT y.id+1 FROM 
           (SELECT 1 id UNION ALL SELECT id+1 FROM x WHERE id < 5) y
           WHERE y.id < 5)
SELECT * FROM x;

此方法适用于您提到的大多数 RDBMS。 但这些查询可能会陷入无限循环


0
投票

MaterializeFeldera 支持相互递归。

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