有没有办法嵌套WITH..AS?

时间:2018-01-15 16:35:07

标签: sql postgresql

我正在尝试做类似的事情:

WITH megalodon_view AS (
     -- 200 lines of gibberish
)
WITH RECURSIVE traverse_table AS (
     -- big queries with multiple uses of megalodon_view for recursive traversing
)

观察它不是定义2个CTE,而是在另一个CTE范围内使用。

我想在制作中使用它,所以我希望不要在物理上创造任何东西

2 个答案:

答案 0 :(得分:1)

您可以将其指定为:

WITH recursive megalodon_view AS (
     -- 200 lines of gibberish
     ), 
     traverse_table AS (
     -- big queries with multiple uses of megalodon_view for recursive traversing
     )
select . . .;

对于第一个CTE,只需要with recursive一次(即使那个CTE不是递归的)。

答案 1 :(得分:0)

如果没有确切的查询,很难说你想要实现什么。无论如何,你可以像WITH那样嵌套:

WITH RECURSIVE t(n) AS (
     SELECT *
     FROM (WITH cte AS (SELECT 1 )
           SELECT * FROM cte
           ) sub
  UNION ALL
  SELECT n+1 FROM t WHERE n < 100
)
SELECT COUNT(*) FROM t;

<强> DBFiddle Demo