【MySQL】上書きINSERTする方法


ここではMySQLで、上書きINSERT(データがなければINSERT、あれば更新)方法を紹介しています。

上書きINSERTする方法

上書きINSERTする方法は、INSERT文にON DUPLICATE KEY UPDATE句を付けて実行します。

例えば、TAB1というCOL1列を主キーとするテーブルに、次のSQLを実行してテーブルにレコードを登録します。

INSERT INTO tab1(col1,col2,col3) VALUES('00004','test','test');

次に↓のSQLを実行するともちろん一意制約エラーとなりますエラーになります。

INSERT INTO tab1(col1,col2,col3) VALUES('00004','test','test');

こういった場合に次のSQLのように、ON DUPLICATE KEY UPDATE句を追加して、もしデータが存在した場合に更新する値を指定します。

INSERT INTO tab1(col1,col2,col3) VALUES('00004','test','test')
ON DUPLICATE KEY UPDATE col2 = 'upd',col3 = 'upd';

これにより、データがない場合はINSERT、データが存在する場合はUPDATEするようになります。