首页 > 解决方案 > 一次更新多行(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'

等等 。

我想在一个请求中更新的所有数据

标签: postgresql

解决方案


首先,您必须取消嵌套您的数组:

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有关功能的更多信息在这里


推荐阅读