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进行此更新。任何帮助将不胜感激。
答案 0 :(得分: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
中加入它。