MySQL

[MySQL] データが無ければINSERT、あればUPDATEする

2015年9月21日

テーブルにデータをINSERTする時に
既に同じ主キーのデータが存在する場合はUPDATE、
存在しなければINSERTをするSQLサンプルです。

サンプルソース

こんな感じのテーブルを想定します。

【testテーブル】
項目名 制約
ID NUMBER(3) PK
VAL1 VARCHAR2(50)
VAL2 VARCHAR2(50)

(例)ID列(主キー)に"111"が存在しなければ、VAL1に"AAA"、VAL2に"BBB"のデータをINSERT、ID列(主キー)に"111"が存在すれば、VAL1に"CCC"、VAL2に"DDD"のデータをUPDATEする


INSERT INTO
  test (ID, VAL1, VAL2)
VALUES
  (111, 'AAA', 'BBB')
ON DUPLICATE KEY UPDATE
  VAL1='CCC',
  VAL2='DDD';

備考

  • ORACLEでいうMERGEと同じ機能です。

-MySQL
-