gpt4 book ai didi

sql - 希望在一份声明中更新现有记录

转载 作者:行者123 更新时间:2023-11-29 12:18:51 25 4
gpt4 key购买 nike

我试图在单个查询中更新主机列表。

有点像......

INSERT INTO
hosts ('address', 'display_name')
VALUES ([['192.168.0.1', 'localhost', '...more'], ['192.168.0.2', 'localhost2', '...more']]);
WHERE host.address = ['192.168.0.1','192.168.0.2', ... ]

但我真的不确定该怎么做?

我想一次强制更新 10k 条记录。

最佳答案

您的问题似乎混淆了 INSERTUPDATE。如果您想INSERT,这很容易。它只是一个逗号分隔的元组列表:

INSERT INTO hosts ('address', 'display_name') VALUES
('192.168.0.1', 'localhost1'),
-- etc.
('192.168.0.2', 'localhost2')
;

对于 UPDATE,假设您可以将 address 视为主键,您可以传递相同的大值列表并加入它,如下所示:

UPDATE hosts
SET display_name = x.n
FROM (VALUES
('192.168.0.1', 'localhost1'),
-- etc.
('192.168.0.2', 'localhost2')
) x(ip, n)
WHERE hosts.address = x.ip
;

如果您运行的是 Postgres 9.5,您还可以使用新的 ON CONFLICT 功能来执行 try-to-insert-and-if-not-then-update。

关于sql - 希望在一份声明中更新现有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37898264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com