Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-30926 - Състояние на сливане

В допълнение към обяснението от @zaratustra, вашето сливане също се опитва да зададе fn и ln към същото name стойност, така че да не даде резултата, който искате, дори да работи. И не можете да използвате fn или ln в using клауза, докато се опитвате да ги актуализирате.

Ако вашият name_test таблицата имаше първичен ключ (или поне уникален) колона, тогава можете да включите това в сливането, но пак ще можете да актуализирате правилно само fn или ln стойност с едно преминаване.

Не съм сигурен защо не правите проста актуализация:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. (Oracle SQL) Прихващане на уникална грешка в ограничението

  2. разлика в sysdate

  3. Как да излекувам причината за изключението при хибернация, възникнало IllegalArgumentException при извикване на сетера?

  4. Oracle, Направете датата и часа първия ден от месеца

  5. Java заявката с DB Link не затваря Db Link връзката