作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这只是一个 SSCCE:
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
是单个值而不是行集,但是我如何才能在通过复杂查询获得的查询值中只定义一次,而不必重复子查询什么时候用?
最佳答案
首先,您不需要在 WHERE
子句中同时使用这两个条件。 i = max_id - 1
就足够了(如果有效的话。)
要使用 CTE 中的值,您要么必须使用(交叉)连接作为其他答案,要么使用这种(不太常见的)语法:
WITH max_i AS
( SELECT MAX(i) FROM test )
SELECT *
FROM test
WHERE i = (TABLE max_i) - 1 ;
在 SQL-Fiddle 测试
关于sql - 为什么我不能在此查询中使用 WITH(公用表表达式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21283287/
我是一名优秀的程序员,十分优秀!