А почему бы не использовать update inner join ?
update tbl as t
inner join (
select 1 id, 'Один' text union
select 2 , 'Два' union
select 3 , 'Три' union
select 4 , 'Четыре'
) as tt on t.id = tt.id
set t.text = tt.text
;
пример на
dbfiddleUPD:
реализовать логику ELSE можно используя LEFT JOIN и COALESCE ( IFNULL )
update tbl as t
left join (
select 1 id, 'Один' text union
select 2 , 'Два' union
select 3 , 'Три' union
select 4 , 'Четыре'
) as tt on t.id = tt.id
set t.text = coalesce(tt.text, 'Другое значение')
;
см. пример на
dbfiddle