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