WITH语句在Postgresql中不起作用

WITH语句在Postgresql中不起作用,sql,postgresql,Sql,Postgresql,我在PgAdmin中运行以下SQL查询: WITH TABLE1 AS ( SELECT int1, int2, int3 FROM atbl ) SELECT int1, <complex computation involving a large number of values of int2 and int3 from TABLE1> FROM TABLE1 为什么会发生这种情况?with语句应可用于PostgreSQL: 据了解,该版本低于8.4。除了使用WITH,还有其

我在PgAdmin中运行以下SQL查询:

WITH TABLE1 AS
( SELECT int1, int2, int3 FROM atbl
)
SELECT int1, <complex computation involving a large number of values of int2 and int3 from TABLE1>
FROM TABLE1
为什么会发生这种情况?with语句应可用于PostgreSQL:

据了解,该版本低于8.4。除了使用WITH,还有其他方法可以获得相同的结果吗?

我发现这很有帮助。并确保您使用的版本>=8.4,因为在引入此版本时。没有工作经验;这不应该是个问题

不过,您的语法看起来是正确的。。。这绝对有效

WITH table1 AS (
SELECT * FROM atbl
)
select * from table1

所以我会检查你正在运行的版本。这说明您遇到了错误。

您可以用以下内容替换它:

SELECT int1, (complex computation involving a large number of values of int2 and int3 from TABLE1) FROM ( SELECT int1, int2, int3 FROM atbl ) table1
简单SQL有什么问题

SELECT 
  int1, 
  <complex computation involving a large number of values of int2 and int3 from atbl>
FROM 
  atbl;

我不能说是PostgreSQL,但我知道如果前面的语句没有以分号结尾,SQLServer会感到困惑。您的查询是大批量的一部分吗?当您链接到8.4文档时,您确实使用PostgreSQL 8.4,对吗实际上是8.1.17版。我真的没想清楚。WITH语句似乎是在这个版本之后引入的……没错,WITH是在8.4中引入的。但是为什么要使用8.1呢?这是生命的终结,不受支持。那个么有什么可以代替WITH语句的吗?在第一个查询的第二个select for every行中,我需要对该表中的所有数据进行一些计算。我想避免为了达到这个目的而再次进行第一次查询…不是真的。。。我仍然需要弄清楚如何在不使用WITH的情况下执行此操作statement@mstaniloiu,临时桌子是最好的选择。@mstaniloiu,我确实回答了这个问题,这就是为什么它不起作用。是的,临时表是另一种选择,但如果可能的话,我会升级。
SELECT 
  int1, 
  <complex computation involving a large number of values of int2 and int3 from atbl>
FROM 
  atbl;