基于postgres中的主键更新具有多个值的多行列

时间:2020-09-06 11:40:22

标签: sql postgresql sql-update

我有一个名为test的表,该表有多行,其中有三列:id,数据,内容

我有一个ID列表以及该键的相应数据。像这样:

list = [(1,"a"),(2,"b"),(10,"c")]

现在,我只想更新ID为1、2、10的数据行中分别具有值“ a”,“ b”和“ c”的行。那就是我想用ID为1,2和10的值“ a”,“ b”和“ c”更新列数据。

我尝试了不同的方法,但都失败了。

我不想在更新逻辑中使用“ case when”,因为会有很多多行(这里举个例子,我只花了3行来更新数据,但实际上这要比那个。

1 个答案:

答案 0 :(得分:1)

使用update from尝试以下操作:

update test_table set data = temp_table.data
from (values
    (1, 'a'),
    (2, 'b'),
    (10, 'c')
) as temp_table(id, data) 
where temp_table.id = test_table.id;

演示-SQL Fiddle

相关问题