I think it will be obvious to see what I\'m trying to do through this simplified example (works in PostgreSQL)....
with a as
(
select 1 as id, 123.456 as val
With BigQuery scripting (Beta now), CREATE TEMP TABLE can be an alternative way. See public documentation here.
You should test to see the performance impact of using a temp table, which may be better or worse. As you can image, with scripting, it is possible to put multiple UPDATE query in one script and sharing a temp table a among them, which increases the opportunity of having better performance.
CREATE TEMP TABLE a as
select 1 as id, 123.456 as value;
update
mytable
set value = coalesce(a1.value, a2.value)
from
a as a1,
a as a2
where
a1.id = mytable.id
or
a2.id = mytable.id2