データベースのテーブルに対して、
・指定したキーのデータが存在していないなら追加したいが、あるのなら内容を更新したい
ということがあると思います。
そういう時、普通にプログラムで処理すると
1.SELECT文でデータの存在確認
2.データが存在しないならINSERT文で新規追加
3.データが存在するならUPDATE文で上書き
となると思います。
これでももちろん問題はないのですが、MySQL上で1.2.3.を一文で行うSQLも存在します。
INSERT INTO tbl_name (col_name1, col_name2, ...) VALUES (value1, value2, ...) ON DUPLICATE KEY UPDATE col_name_x=value_x, col_name_y=value_y, ...;
1行目は普通のINSERT文です。
2行目が主キーなどのユニーク制約に抵触した場合に行われる処理で、該当キーのデータにUPDATE以下の内容を設定します。
知ってるか知らないかの違いですが、プログラムも見やすくなったり、SQL文を発行する回数が減ることで場合によってはパフォーマンスも上がります。
よろしければご活用くださいませ☆
※ON DUPLICATE はMySQLサーバでだけ使える句のようです。POSTGRES、SQL SERVER等では別の書き方をしないといけないようなのでご注意ください。