sql - 根据 id 列表为多条记录插入相同的值

标签 sql postgresql sql-insert unnest

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

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

最佳答案

要为列表中的每个 id 插入一行,您可以使用 unnest() 生成一组行:

INSERT INTO customers(customer_id, column1)
SELECT id, 't'
FROM   unnest ('{123,456,789}'::int[]) id;

如果您说错了,实际上是要更新现有行:

UPDATE customers
SET    column1 = 't'
WHERE  customer_id = ANY ('{123,456,789}'::int[]);

关于sql - 根据 id 列表为多条记录插入相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23581079/

相关文章:

bash - libpqxx 配置找不到用于本地安装 PostgreSQL 的 libpq-fe.h

sql-server - SQL Server 默认值是在插入之前还是之后生成的?

sql - 优化 Postgis 查询并了解性能

sql - 如何返回与线串相交的所有多边形?

java - 使用 jOOQ 和 PostgreSQL serial 和 RETURNING 返回一个值

mysql - SQL从4个表生成所有组合

sql - PostgreSQL 中的嵌套聚合函数

java - 为什么我能够重写 java.sql.Connection 中的某些方法而不是其他方法

sql - 无法检查 sql 数据库中的空值

sql - 在 SQL 中声明多个变量