根据 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 列表为多条记录插入相同的值的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 从一个表单中插入多条记录

将多条记录插入 SQL 表时,它不遵循顺序

如何在多条记录插入中获取最后插入的 id?

sql server返回插入记录的ID(多条记录)

在 SQL Server 中,您可以根据计算插入多条记录吗?

sql 多条记录插入