Mit der Where-Klauses schränkst du die Suche nur ein erhältst aber keinen Zugriff auf das Ergebnis.
Für den Update gibt es 2 Varianten (je nach Release):


update file1 a
set
a.field1 = (select b.field1 from file2 b where a.key=b.key)
,a.field2 = (select b.field2 from file2 b where a.key=b.key)
:
:
where exists (select * from file2 b where a.key = b.key)

Ab neueren Releasen kann man das nun vereinfachen:

update file1 a
set (a.feld1, a.feld2 ...) = (select b.feld1, b.feld2 ... from file2 b where a.key=b.key)

where exists (select * from file2 b where a.key = b.key)