Postgres:如何使用单个命令更新 table 中的多条记录

Postgres: How to update multiple records in a table with a single command

我有一个 table,我想更新多个字段以完成 table,以便填充所有字段,我如何在 Postgres 脚本中执行此操作? 我所能找到的就是如何一次更新一条记录,或者如何遍历并将所有内容更改为相同的值。

更新 100 条记录需要很长时间

oid 名字 昵称 多布
0 克里斯 交叉 1985 年 1 月 1 日
1 理查德 02Feb1896
2 迈克尔 米奇
3 乔纳森

目前我可以用以下内容更新一个字段:

    UPDATE mytable SET nickname = 'Rick' Where oid = 1;

但是我该怎么做才能改变所有这些呢?

提前致谢 达斯

您可以使用 UPDATE ... FROM 并加入新值:

UPDATE mytable
SET nickname = coalesce(x.nickname, mytable.nickname)
    dob = coalesce(x.dob, mytable.dob)
FROM (SELECT id,
             max(nickname) AS nickname,
             max(dob) AS dob
      FROM (VALUES (1, 'Rick', NULL),
                   (3, 'Jono', NULL),
                   (2, NULL, '1987-03-03'),
                   (3, NULL, '1988-04-04')) AS y(id, nickname, dob)
      GROUP BY id
     ) AS x
WHERE mytable.id = x.id;

由于 UPDATE 只能更改每一行一次,因此您必须按 id 进行聚合。