簡體   English   中英

Postgres:如何使用單個命令更新表中的多個記錄

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

我有一個表格,我想更新多個字段以完成表格,以便填寫所有字段,如何在 Postgres 腳本中執行此操作? 我所能找到的只是如何一次更新一條記錄,或者如何循環並將所有內容更改為相同的值。

有 100 條記錄要更新,這需要很長時間

樣的 姓名 昵稱 出生日期
0 克里斯 1985 年 1 月 1 日
1 理查德 1896 年 2 月 2 日
2 邁克爾 米奇
3 喬納森

目前,我可以使用以下內容更新一個字段:

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

但是我該怎么做才能改變所有這些呢?

  • 昵稱 = 'Rick' 其中 oid = 1
  • 昵稱 = 'Jono' 其中 oid = 3
  • dob = '03Mar1987' 其中 oid = 2
  • dob = '04Apr1988' 其中 oid = 3

提前致謝

您可以使用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聚合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM