Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-30926 - Unisci lo stato

Oltre alla spiegazione di @zaratustra, la tua unione sta anche tentando di impostare il fn e ln allo stesso name valore in modo che non dia il risultato desiderato anche se ha funzionato. E non puoi usare fn o ln nel using clausola mentre stai cercando di aggiornarli.

Se il tuo name_test la tabella aveva una colonna chiave primaria (o almeno univoca), quindi potresti includerla nell'unione, ma saresti comunque in grado di aggiornare correttamente solo il fn o ln valore in un passaggio.

Non sono sicuro del motivo per cui non stai facendo un semplice aggiornamento:

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