Я ищу, чтобы обновить несколько строк в PostgreSQL в одном выражении. Есть ли способ сделать что-то вроде следующего?
UPDATE table
SET
column_a = 1 where column_b = '123',
column_a = 2 where column_b = '345'
sql
postgresql
newUserNameHere
источник
источник
Ответы:
Вы также можете использовать
update ... from
синтаксис и таблицу сопоставления. Если вы хотите обновить более одного столбца, это гораздо более обобщенно:Вы можете добавить столько столбцов, сколько захотите:
sql fiddle demo
источник
... from (values ('2014-07-21'::timestamp, 1), ('2014-07-20', 2), ...
Более подробная информация в документации PostgreSQLОсновываясь на решении @Roman, вы можете установить несколько значений:
источник
from (values $1)
где $ 1 - это массив структур. В приведенном выше случае, строгий будет иметь свойства id, first_name и last_name.Да, ты можешь:
И рабочее доказательство: http://sqlfiddle.com/#!2/97c7ea/1
источник
'123'
ни'345'
. Вы должны использоватьWHERE column_b IN ('123','456')
...'456'
должно быть'345'
ELSE column_b
после последнейWHEN ? THEN ?
строки, столбцу будет присвоено его текущее значение, что предотвратит то, что сказал MatheusQI.Наткнулся на похожий сценарий и выражение CASE было мне полезно.
Отчеты - это таблица здесь, account_id такой же, как для report_ids, упомянутых выше. Приведенный выше запрос установит для 1 записи (той, которая соответствует условию) значение true, а для всех несоответствующих - значение false.
источник
Для обновления нескольких строк в одном запросе, вы можете попробовать это
если вам не нужны дополнительные условия, удалите
and
часть этого запросаисточник
Допустим, у вас есть массив идентификаторов и эквивалентный массив статусов - вот пример, как это сделать со статическим SQL (SQL-запрос, который не изменяется из-за разных значений) массивов:
источник