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

SQLのmerge文について

このQ&Aのポイント
  • merge文を使用して、該当KEYが存在する場合はseqに1を加算し、存在しない場合はseqに1を設定するSQL文のサンプルを探しています。
  • merge文を使ったSQLのサンプルについて教えてください。該当KEYが存在する場合はseqに1を加算し、存在しない場合はseqに1を設定する処理を実現したいです。
  • merge文を使って、該当KEYがある場合はseqに1を加算し、ない場合はseqに1を設定するSQLの例を教えてください。

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

  • ベストアンサー
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.2

>USING (SELECT '12345' key from dual) acにあるdualは任意の名称でしょうか? すみません。dual表はOracleでのダミーテーブルのようなものです。 対象のデータベース名が書いていなかったのに、当方の環境でのSQLを書いてしまいました。 ですので、上記の箇所はお使いになっているデータベース製品に合わせて修正してください。

Koba5
質問者

お礼

yamada_gさん コメントありがとうございます データベースは、db2でした

その他の回答 (1)

  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.1

このSQLだと、A表にkey='12345'のレコードが無い場合はデータが取得できないため期待通りの結果にならないです。 こうすればいいのではないでしょうか。 MERGE INTO A表 ab USING (SELECT '12345' key from dual) ac ON (ab.KEY = ac.KEY) WHEN MATCHED THEN UPDATE SET --ac.SEQ = ac.SEQ +1 更新するのはacではなくabですよね ab.SEQ = ab.SEQ +1 WHEN NOT MATCHED THEN INSERT (KEY, SEQ) VALUES ('12345',1);

Koba5
質問者

補足

yamada_gさん コメントありがとうございます USING (SELECT '12345' key from dual) ac にあるdual は任意の名称でしょうか?