Обновление столбца из нескольких строк с несколькими значениями на основе первичных ключей в postgres

#sql #postgresql #sql-update

#sql #postgresql #sql-обновление

Вопрос:

У меня есть таблица с именем test, состоящая из нескольких строк, в которой есть три столбца: идентификатор, данные, содержимое

У меня есть список идентификаторов и соответствующих данных для этого ключа. Что-то вроде этого:

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

Теперь я хочу обновить только те строки, которые имеют идентификаторы 1, 2, 10 со значениями «a», «b» и «c» в столбце данных соответственно. То есть я хочу обновить данные столбца значениями «a», «b» и «c» для идентификаторов 1,2 и 10.

Я пробовал разные подходы, но они терпят неудачу.

Я не хочу использовать «случай, когда» в логике обновления, поскольку будет много нескольких строк (здесь для примера я взял только 3 строки для обновления данных, но на самом деле это было бы больше, чем это.)

Комментарии:

1. Добавьте то, что вы пробовали до сих пор.

2. Я пробовал подход case when, но поскольку я хочу сделать это для большего количества строк, этот подход case when здесь не сработает.

Ответ №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