Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-30926 - Mesclar estado


Além da explicação do @zaratustra, sua mesclagem também está tentando definir o fn e ln para o mesmo name valor para que não desse o resultado que você deseja, mesmo que funcione. E você não pode usar fn ou ln no using cláusula enquanto você está tentando atualizá-los.

Se o seu name_test table tivesse uma coluna de chave primária (ou pelo menos exclusiva), então você poderia incluí-la na mesclagem, mas ainda seria capaz de atualizar corretamente o fn ou ln valor em uma passagem.

Não sei por que você não está fazendo uma atualização simples:
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