根据ID列表为多个记录插入相同的值

时间:2014-05-10 12:30:29

标签: sql postgresql sql-insert unnest

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

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

2 个答案:

答案 0 :(得分:3)

要为列表中的每个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[]);

答案 1 :(得分:0)

是的,您可以执行以下操作:

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}

我希望你在找什么!