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 する。
これは便利だ・・・。
あんまりカウンターとか使わないけど・・・。