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

0g0grzrc  于 12个月前  发布在  PostgreSQL
关注(0)|答案(3)|浏览(149)

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

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

字符串

vlurs2pr

vlurs2pr1#

是的,你可以这样做:

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}
我希望你正在寻找什么!

ej83mcc0

ej83mcc02#

要在没有SELECT的情况下执行此操作,您可以在unnest()之后使用ARRAY[]

INSERT INTO customers (customer_id, column1)
VALUES (unnest(ARRAY[123,456,789]),'t');

字符串

eyh26e7m

eyh26e7m3#

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

相关问题