Я пытаюсь обновить несколько строк в одном запросе, так как мне нужно обновить несколько строк одновременно. В моем запросе есть предложение where, которое применяется только к определенным строкам.
Например, у меня следующий запрос:
update mytable as m set
column_a = c.column_a,
column_b = c.column_b
from (values
(1, 12, 6, TRUE),
(2, 1, 45, FALSE),
(3, 56, 3, TRUE)
) as c(id, column_a, column_b, additional_condition)
where c.id = m.id
and CASE c.additional_condition when TRUE m.status != ALL(array['active', 'inactive']) end;
Последняя строка в предложении where
(m.status != ALL(array['active', 'inactive'])
) следует применять только к строкам, которые имеют TRUE
в значении c.additional_condition
. В противном случае условие не должно применяться.
Возможно ли достичь этого в Postgres?