2016-05-24 107 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將可供使用。

相關問題