我试图在Postgres 9.1.3中使用这个查询:

WITH stops AS (
    SELECT citation_id,
           rank() OVER (ORDER BY offense_timestamp,
                     defendant_dl,
                     offense_street_number,
                     offense_street_name) AS stop
    FROM   consistent.master
    WHERE  citing_jurisdiction=1
)

UPDATE consistent.master
SET arrest_id = stops.stop
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

我得到了这个错误:

ERROR:  missing FROM-clause entry for table "stops"
LINE 12: SET arrest_id = stops.stop
                         ^

********** Error **********

ERROR: missing FROM-clause entry for table "stops"
SQL state: 42P01
Character: 280

我真的很困惑.根据Postgres文档,WITH子句看起来是正确的.如果我在WITH子句中单独运行查询,我会得到正确的结果.

推荐答案

fine manual人中:

使用数据库中其他表中包含的信息修改表有两种方法:使用子 Select ,或在FROM子句中指定其他表.

所以你只需要一个FROM子句:

WITH stops AS (
    -- ...
)
UPDATE consistent.master
SET arrest_id = stops.stop
FROM stops -- <----------------------------- You missed this
WHERE citing_jurisdiction=1
  AND stops.citation_id = consistent.master.citation_id;

错误信息甚至还说:

错误:表"stops"的子句条目中缺少

Postgresql相关问答推荐

Postgs SQL用于比较两个表之间的数据并填充到目标中

如何在 postgres where 子句中使用 or 对条件进行组合或分组

JOOQ:数据库版本早于 COCKROACHDB 支持的方言:13.0.0

gitlab在ubuntu上安装duplicate schema问题

PL/pgSQL 中 PL/SQL %ISOPEN 的类似功能是什么?

PostgreSQL 函数按名称传递参数

MERGE 语句的锁定级别

无法从在 wsl 2 上运行的服务之一连接到在 wsl 2 上的容器中运行的 postgres 数据库

如何在 Sequelize ORM 中插入 PostGIS GEOMETRY 点?

heroku、postgreSQL、django、comments、tastepie:没有运算符匹配给定的名称和参数类型

Java - 日期保存为前一天

try 访问本地主机中的数据库时如何解决Error: The server does not support SSL connections?

在函数中返回字段作为插入结果

在 Windows 10 中执行时,Docker 容器关闭并给出data directory has wrong ownership错误

获取 psycopg2 count(*) 结果数

如何删除 Postgres 上的所有数据库?

Hibernate 启动很慢

如何在 redshift 中对字段进行 GROUP BY 和 CONCATENATE

在 postgresql 中对使用 array_agg 创建的文本聚合进行排序

GRANT SELECT 特权使用一个语句对所有序列