2013-04-04 81 views
6

在MySQL中,我们使用替代甲骨文对MySQL REPLACE INTO

REPLACE INTO 

插入如果行不存在,如果存在更新。

Oracle中是否有相应的命令?

+1

不要使用'在MySQL更换INTO',而使用'INSERT ...在DUPLICATE KEY UPDATE上。 – Quassnoi 2013-04-04 06:57:07

+0

另请参阅http://stackoverflow.com/questions/237327/oracle-how-to-upsert-update-or-insert-into-a-table/2692441#2692441 – user123444555621 2014-05-02 13:26:58

回答

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

我是否真的需要另一个表来合并?或者有没有办法在命令中包含数据? – user123444555621 2014-05-02 07:29:54

+0

要回答我自己的问题,我想可以使用'dual'完成:http://www.idevelopment.info/data/Oracle/DBA_tips/SQL/SQL_5.shtml – user123444555621 2014-05-03 06:10:30