UPDATE the records in oracle SQL with joinings and where exists query
Usually, when you need to join multiple tables in an UPDATE, MERGE is the solution.

merge into address a1 using
 (
   select
    p.address_fk,
    ta2.tempaddress1
  from
    premise p 
    join account ac on (ac.id = p.account_fk)
    join tempaddresstable ta2  on (ac.ext_ref = ta2.tempextref)
 ) ta1
 on (a1.id = ta1.address_fk)
when matched then update set a1.address1 = ta1.tempaddress1;