• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MERGE文について)

oracleのMERGE文でアンマッチ時のインサート文にSELECTで引いた値を入れたい

このQ&Aのポイント
  • oracleのMERGE文でアンマッチ時のインサート文にSELECTで引いた値を入れたい
  • MERGE文にはインサート文にSELECTを使用することはできません
  • INSERT文単体ではエラーなく挿入できます

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

USINGで指定するマージ対象をテーブルでなく、インラインビューにすれば、 アンマッチの際にインサートする項目は全て揃っているハズです。 MERGE INTO USER_MASTER UM USING ( SELECT UI.USER_ID, UI.USER_NAME, UI.NO, SH.SHOZOKU_NAME FROM USER_MASTER_IMPORT UI LEFT JOIN SHOZOKU SH ON (UI.USER_ID = SH.USER_ID ) UI ON ( UM.USER_ID = UI.USER_ID) -- 既存レコードの更新 WHEN MATCHED THEN UPDATE SET USER_NAME = USER_MASTER_IMPORT.USER_NAME -- 新規レコードの作成 WHEN NOT MATCHED THEN INSERT ( USER_ID, USER_NAME, NO ,SHOZOKU_NAME) VALUES ( UI.USER_ID, UI.USER_NAME, UI.NO, UI.SHOZOKU_NAME)

chocochip4
質問者

お礼

ビューを使用する発想がありませんでした。 上記SQLでうまくいきました。 素早い回答ありがとうございました。

関連するQ&A