gpt4 book ai didi

sql - 为什么我不能在此查询中使用 WITH(公用表表达式)?

转载 作者:行者123 更新时间:2023-11-29 12:28:57 24 4
gpt4 key购买 nike

这只是一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com