MySQLで挿入または更新を一つのSQL文で実現する方法

こんにちは!ぐちです。

めんどくさいことをしない

仕事でWebシステムやWebAPIを作るときはたいていMySQLを採用しています。
いわゆるLAMP環境ってやつですね。

既存レコードがあれば更新、なければ挿入という場面はかなり頻発すると思います。
更新or挿入する前に検索を行い結果によって条件で別けるというのは容易に想像がつくと思います。

が、めんどくさいですよね。しかも毎回検索するコストがかかりますし。。。

これで1発解決

上記のようなケースで利用できるSQLがこちら!

INSERT INTO TABLE_HOGE (id, hoge) values (1, 1) ON DUPLICATE KEY UPDATE id = 1, hope = hoge + 1;

実現したいことによって使えるかわかりませんがログイン回数や閲覧回数をカウントアップしていくようなケースはきっとこれで大丈夫!!
※上記の場合はidが1のレコードが存在すればhogeをカウントアップ、なければ新規挿入となります。

なはずです。。。