postgresql - 一次更新多行(postgres)
问题描述
我有 3 个数组。例如 :
let status = [1,2,3];
let name = ['Andrey','Vasya','Petia'];
let age = [23,45,54];
我也有我想要更新的每个用户的 id 数组。
let id_list = [2323,3434,3434]
我想发送 postgres 请求,我通过一个请求以这种方式更新此数据:
UPDATE users SET status = '1' , name = 'Andrey', age = '23' WHERE id ='2323'
UPDATE users SET status = '2' , name = 'Vasya', age = '45' WHERE id ='3434'
等等 。
我想在一个请求中更新的所有数据
解决方案
首先,您必须取消嵌套您的数组:
WITH sample (id, name, status, age) AS (
SELECT
*
FROM
--Using unnest function
unnest(
ARRAY[2323, 3434, 3434],
ARRAY['Andrey','Vasya','Petia'],
ARRAY[1,2,3],
ARRAY[23,45,54]
)
)
--And then proceed to your update
UPDATE
users
SET status = s.status , name = s.name, age = s.age
FROM sample s
WHERE users.id = s.id;
unnest
有关功能的更多信息在这里。
推荐阅读
- javascript - 如何将 Canvas Image 作为 HttpPostedFilebase 对象发送?有可能的?
- python - 发送消息的程序无法识别某些符号
- bitbucket-pipelines - bitbucket 管道找不到 postgresql 图像
- reactjs - 调度呼叫未转到 updatePost 操作创建者,但帖子已更新
- python - 如何使一个值=除另一个值之外的任何值
- python - 训练验证数据拆分 - 标签可用但没有类
- python - psycopg2 将 memoryview 转换回 psycopg2.binary 对象数组
- go - 从另一个文件导入地图变量
- c# - 相同的方法体,不同的 GetILAsByteArray 结果
- java - 如何确定输入最后一个整数的时间?爪哇