2016-05-24 74 views
1

这会给出错误:为什么工会不能与陈述一起工作?

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

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

这应该工作:

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

这通常是用来做复杂的计算,并simplfy他们。不为1 union 2

这基本上是创建派生表用,with部分后,查询开始,所以应该被格式化为正常select/update/delete查询,但a1 & a2将可供使用。

相关问题