【问题标题】:Insert same values for multiple records based on list of ids根据 id 列表为多条记录插入相同的值
【发布时间】:2014-05-10 12:30:28
【问题描述】:

我有一个 PostgreSQL 数据库,并希望根据我拥有的记录 ID 为多条记录插入相同的值。
有没有办法在INSERT 语句中创建WHERE 条件?例如:

insert into Customers (new-customer) values ('t') where customer_id in (list)

【问题讨论】:

  • 您要更新现有记录吗?
  • 您的问题不清楚。可以举个真实的例子吗?

标签: sql postgresql sql-insert unnest


【解决方案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}

我希望你在寻找什么!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多