为什么工会不与声明合作?

时间:2016-05-24 12:51:41

标签: sql postgresql postgresql-9.4

这会出错:

with a1 as (select 2), a2 as (select 3)
a1 union a2;
-- ERROR:  syntax error at or near "a1"

但这不会:

(select 2) union (select 3);
/*
 ?column? 
----------
        2
        3
(2 rows)
*/

发生了什么?

1 个答案:

答案 0 :(得分:1)

由于您的第一个查询未正确格式化并且存在一些语法错误,因此SELECT语句在哪里?什么是a1 union a2应该是什么?

这应该有效:

with a1 as (select 2), a2 as (select 3)
SELECT * FROM a1
UNION
SELECT * FROM a2;

这通常用于进行复杂的计算,并简化它们。不适用于1 union 2

这基本上是创建要在with部分之后使用的派生表,查询开始,因此应将其格式化为普通select/update/delete查询,但a1 & a2将可用于使用