An interesting problem. This is the first solution for MySQL (I initially read the question about that database). After that, the solution is for SQL Server.
join. , id . , :
update table1 t1
(select (@rn := @rn + 1) as seqnum, value
from table2 cross join
(select @rn := -1) vars
) t2 cross join
(select count(*) as cnt from table2) cnt
on mod((t1.id - 1), cnt.cnt) = t2.seqnum
set t1.value = t2.value;
table1 , . :
update table1 t1 join
(select @rn1 := @rn + 1) as seqnum, id
from table1 t1 cross join
(select @rn1 := 0) vars
order by id
) t1s
on t1.id = t1s.id join
(select (@rn := @rn + 1) as seqnum, value
from table2 cross join
(select @rn := -1) vars
) t2 cross join
(select count(*) as cnt from table2) cnt
on mod((t1s.seqnum - 1), cnt.cnt) = t2.seqnum
set t1.value = t2.value;
EDIT:
SQL Server. :
update table1 t1
set t1.value = t2.value;
from table1 t1 join
(select t2.*, count(*) over () as cnt
from table2 t2
) t2
on (t1.id - 1) % t2.cnt = (t2.id - 1);
, id . , .