postgresql 与 ms sql 中的 cte

cte in postgresql vs ms sql

我的观察是我们不能在 postgresql 的嵌套 cte 案例中混合 cte 和递归 cte,但看起来我们可以在 MS SQL 中做到这一点。我对吗?例如,对于 postgresql,在这种情况下我会得到错误

with cte1 ( ... ),
recursive cte2 (...)
select * from cte1 join cte2;

但看起来它适用于女士 sql。这是正确的吗?

两个数据库都支持混合非递归和递归通用 table 表达式。

在 Postgres 中,语法是:

with recursive
    cte1 as (...), -- non-recursive CTE
    cte2 as (...)  -- recursive CTE
select * from cte1 join cte2

SQL 服务器无法识别 recursive 关键字,因此是:

with 
    cte1 as (...), -- non-recursive CTE
    cte2 as (...)  -- recursive CTE
select * from cte1 join cte2