![](/img/trans.png)
[英]How do I update multiple records in a table with a single query? (postgresql)
[英]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;
但是我該怎么做才能改變所有這些呢?
提前致謝
您可以使用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.