2013-04-04 10 views
6

W MySQL używamyOracle alternatywa dla MySQL REPLACE INTO

REPLACE INTO 

wstawić jeżeli rząd nie istnieje i zaktualizować jeśli istnieje.

Czy w Oracle jest odpowiednie polecenie?

+1

Nie używaj 'WYMIENIĆ INTO' w MySQL, raczej używać' INSERT ... NA DUPLICATE KEY UPDATE ". – Quassnoi

+0

zobacz także http://stackoverflow.com/questions/237327/oracle-how-to-upsert-update-or-insert-into-a-table/2692441#2692441 – user123444555621

Odpowiedz

7
MERGE 
INTO destTable d 
USING (
     SELECT * 
     FROM sourceTable 
     ) s 
ON  (s.id = d.id) 
WHEN NOT MATCHED THEN 
INSERT (id, destCol1, destCol2) 
VALUES (id, sourceCol1, sourceCol2) 
WHEN MATCHED THEN 
UPDATE 
SET  destCol1 = sourceCol1, 
     destCol2 = sourceCol2 
+0

Czy rzeczywiście potrzebuję innego stołu do scalenia? Czy istnieje sposób na uwzględnienie danych w komendzie? – user123444555621

+0

Aby odpowiedzieć na własne pytanie, myślę, że można to zrobić za pomocą 'dual': http://www.idevelopment.info/data/Oracle/DBA_tips/SQL/SQL_5.shtml – user123444555621