这只是一个SSCCE:为什么我不能在此查询中使用WITH(公用表表达式)?
CREATE TABLE test(i INTEGER NOT NULL);
WITH max_i AS (SELECT MAX(i) FROM test)
SELECT * FROM test WHERE max_i - i < 2 AND max_i!=i
PostgreSQL的抱怨:
ERROR: column "max_i" does not exist
我想这是因为max_i
是一个值,而不是一个行集,但我如何才能在一次定义我通过复杂查询获得的查询值,而不必在使用子查询时重复子查询?
有趣。我不知道你可以使用'table'语法(这是'select * from'的缩写)作为标量值。 –
+1为改善我的回答 –
关于不需要这两个条件,是的,这是一个SSCCE我只是想动机的情况下,一个*可能*不得不参考表达不止一次。 –