Допустим, у вас есть массив идентификаторов и приравненных массив статусов - вот пример того, как сделать это с помощью статического SQL (SQL-запроса, который не меняется из-за различных значений) массивы:
drop table if exists results_dummy;
create table results_dummy (id int, status text, created_at timestamp default now(), updated_at timestamp default now());
-- populate table with dummy rows
insert into results_dummy
(id, status)
select unnest(array[1,2,3,4,5]::int[]) as id, unnest(array['a','b','c','d','e']::text[]) as status;
select * from results_dummy;
-- THE update of multiple rows with/by different values
update results_dummy as rd
set status=new.status, updated_at=now()
from (select unnest(array[1,2,5]::int[]) as id,unnest(array['a`','b`','e`']::text[]) as status) as new
where rd.id=new.id;
select * from results_dummy;
-- in code using **IDs** as first bind variable and **statuses** as the second bind variable:
update results_dummy as rd
set status=new.status, updated_at=now()
from (select unnest(:1::int[]) as id,unnest(:2::text[]) as status) as new
where rd.id=new.id;
Я продолжаю пытаться найти его на этой странице, но я не могу его получить. Я вижу, где вы можете обновлять несколько строк, используя оператор where, но я не понимаю, как обновлять несколько строк, каждая из которых имеет свой собственный оператор where. Я также искал google и не нашел реального четкого ответа, поэтому я надеялся, что кто-то сможет дать ясный пример. – newUserNameHere
Извините, моя ошибка. Обновлено. – zero323