#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