根据 id 列表为多条记录插入相同的值
Posted
技术标签:
【中文标题】根据 id 列表为多条记录插入相同的值【英文标题】:Insert same values for multiple records based on list of ids 【发布时间】:2014-05-10 12:30:28 【问题描述】:我有一个 PostgreSQL 数据库,并希望根据我拥有的记录 ID 为多条记录插入相同的值。
有没有办法在INSERT
语句中创建WHERE
条件?例如:
insert into Customers (new-customer) values ('t') where customer_id in (list)
【问题讨论】:
您要更新现有记录吗? 您的问题不清楚。可以举个真实的例子吗? 【参考方案1】:要为列表中的每个 id 插入一行,您可以使用 unnest()
生成一组行:
INSERT INTO customers(customer_id, column1)
SELECT id, 't'
FROM unnest ('123,456,789'::int[]) id;
如果您说错了并且实际上是要UPDATE
现有行:
UPDATE customers
SET column1 = 't'
WHERE customer_id = ANY ('123,456,789'::int[]);
【讨论】:
轻微语法错误:使用 "::int[]" 转换数据类型。 @pkExec:谢谢,已修复。【参考方案2】:是的,你可以这样做:
INSERT INTO customers(customer_id, customer_name)
select 13524, 'a customer name'
where 13524 = ANY ('13524,5578,79654,5920'::BIGINT[])
这里将添加一个 ID 为:13524
的客户,因为它的 ID 在列表中:13524,5578,79654,5920
我希望你在寻找什么!
【讨论】:
以上是关于根据 id 列表为多条记录插入相同的值的主要内容,如果未能解决你的问题,请参考以下文章