Además de la explicación de @zaratustra, su combinación también está intentando establecer el fn y ln al mismo name value por lo que no daría el resultado que desea, incluso si funcionó. Y no puedes usar fn o ln en el using cláusula mientras intenta actualizarlos.
Si su name_test la tabla tenía una columna de clave principal (o al menos única), entonces podría incluirla en la combinación, pero aún así solo podría actualizar correctamente el fn o ln valor en una sola pasada.
No estoy seguro de por qué no estás haciendo una actualización simple:
update name_test nt
set fn = (select td.name from temp_distinct td where td.fn = nt.fn),
ln = (select td.name from temp_distinct td where td.fn = nt.ln);
8 rows updated.
select * from name_test;
FN LN
----- -----
Mich Steve
Mich Phil
Mark Dave
Mich Phil
Mich Dave
Phil John
Steve Dean
Steve Phil