这会出错:
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)
*/
发生了什么?
答案 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
将可用于使用