【MySQL】ON DUPLICATE KEY UPDATE

ON DUPLICATE KEY UPDATE は データを INSERT する時に
ユニーク制約に違反していれば任意のUPDATEを実行してくれる。

日付ごとの何かをカウントするテーブルを更新する場合は以下になる。
(hit_dateにはユニーク制約を付けておく。)

INSERT INTO hit_counter(hit_date, cnt) VALUES(CURRENT_DATE, 1) ON DUPLICATE KEY UPDATE cnt = cnt + 1;

hit_dateがユニーク制約なので、
すでにその日の行が存在した場合は cnt = cnt + 1 を実行する。
その日の行が存在しない場合は、普通に insert する。

これは便利だ・・・。
あんまりカウンターとか使わないけど・・・。