0
    UPDATE member_copy
SET locked_date = CURRENT_DATE,
 notes = (
    SELECT
        notes
    FROM
        member_copy
    WHERE
        ID = 17579
) || ' CLOSED'
WHERE
    ID = 17579

我正在尝试在 PostgreSQL 8.1.23 中像这样运行数据库更新。我需要同时使用大约 800 个 id 进行此更新。任何帮助,将不胜感激。

4

1 回答 1

2

您可以在很大程度上简化为:

UPDATE member_copy
SET locked_date = CURRENT_DATE
   ,notes = COALESCE(notes || ' ', '') || 'CLOSED'
WHERE id IN (17579, 12345, ...); --- 800 IDs

COALESCE旨在捕获notes IS NULL. 甚至应该在古代 Postgres 8.1 中工作。但是您确实必须升级到当前版本。

在现代 Postgres 中,我会使用一个临时 ID 表(或子选择)并在UPDATE.

于 2013-12-10T16:24:52.333 回答