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)

簡単に言えば、これはselectonからすべてを取りますtable2。次に、このクエリを条件に結合しますtable1。「一致」がある場合は更新し、そうでない場合は挿入します。

ドキュメントには、現在必要のないさまざまな追加オプションに関する詳細情報が含まれています。

于 2012-07-02T18:09:15.017 に答える
1

マージステートメントを見てください。

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

于 2012-07-02T17:52:56.120 に答える