1

可能重复:
Oracle:如何 UPSERT(更新或插入表?)

你们能给我一个关于如何在以下情况下进行的建议:

Read table 2 column 1 
if value says the record exists in table 1
update table 1 record with table 2 record details
else(value says the record does not exist in table 1)
insert table 1 record with table 2 record details

我是 Oracle SQL 的初学者,如果有更好的方法,请告诉我..我正在考虑使用游标来解决这个问题..

4

2 回答 2

6

最简单的答案是使用以下merge语句:

MERGE INTO table1 a
USING ( select column1, column2 
          from table2 ) b
ON ( a.column1 = b.column1 )
WHEN MATCHED THEN 
  update set a.column2 = b.column2
WHEN NOT MATCHED THEN 
  insert (a.column1, a.column2)
  values (b.column1, b.column2)

简单地说,这需要一切selecttable2然后它将这个查询加入到table1条件中。如果有“匹配”,则更新,否则插入。

文档包含有关您当前不需要的各种附加选项的更多信息。

于 2012-07-02T18:09:15.017 回答
1

看看合并语句。

http://psoug.org/reference/merge.html

于 2012-07-02T17:52:56.120 回答