首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PostgreSQL:如何使用嵌套CTE和UNION?

PostgreSQL:如何使用嵌套CTE和UNION?

提问于 2018-03-21 04:50:47
回答 1关注 0查看 167

我正在尝试学习SQL,使用PostgreSQL 9.1.3。即:

这样做是可行的:

代码语言:txt
复制
WITH innermost AS (SELECT 2)
SELECT * FROM innermost
UNION SELECT 3;

结果:

代码语言:txt
复制
 ?column? 
----------
        2
        3

这样做是可行的:

代码语言:txt
复制
WITH outmost AS (
        (WITH innermost AS (SELECT 2)
         SELECT * FROM innermost)
)                                
SELECT * FROM outmost;

结果:

代码语言:txt
复制
?column? 
----------
        2

这也适用于:

代码语言:txt
复制
WITH outmost AS (
  SELECT 1
  UNION (WITH innermost AS (SELECT 2)
         SELECT * FROM innermost)
)
SELECT * FROM outmost;

结果:

代码语言:txt
复制
 ?column? 
----------
        1
        2

但这确实工作:

代码语言:txt
复制
WITH outmost AS (
  SELECT 1
  UNION (WITH innermost as (SELECT 2)
         SELECT * FROM innermost
         UNION SELECT 3)
)
SELECT * FROM outmost;

结果:

代码语言:txt
复制
ERROR:  relation "innermost" does not exist
LINE 4:          SELECT * FROM innermost

是否有一些一般规则可以让我预测嵌套的CTE和UNION的哪些组合将起作用或不起作用?

相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档