sql >> Databasteknik >  >> RDS >> Oracle

ORA-30926 - Sammanfogningstillstånd

Förutom förklaringen från @zaratustra, försöker din sammanslagning också ställa in fn och ln till samma name värde så att det inte skulle ge det resultat du vill ha även om det fungerade. Och du kan inte använda fn eller ln i using klausul när du försöker uppdatera dem.

Om ditt name_test Tabellen hade en primärnyckel (eller åtminstone unik) kolumn, då kunde du inkludera den i sammanslagningen, men du skulle fortfarande bara kunna uppdatera antingen fn korrekt. eller ln värde i ett pass.

Jag är inte säker på varför du inte gör en enkel uppdatering:

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  


  1. SQL Count för att inkludera nollvärden

  2. MYSQL Lägg till arbetsdagar till datum

  3. SQL (ORACLE):ORDER BY och LIMIT

  4. Undvikande citat för MySQL i python