- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MERGE文について)
oracleのMERGE文でアンマッチ時のインサート文にSELECTで引いた値を入れたい
このQ&Aのポイント
- oracleのMERGE文でアンマッチ時のインサート文にSELECTで引いた値を入れたい
- MERGE文にはインサート文にSELECTを使用することはできません
- INSERT文単体ではエラーなく挿入できます
- みんなの回答 (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)
お礼
ビューを使用する発想がありませんでした。 上記SQLでうまくいきました。 素早い回答ありがとうございました。