MySQLでデータがなければINSERT、データがあったらUPDATE(複数行もOK!)

例えば myfavorite というテーブルがありまして。(nameはUNIQUE)

name rank
豆大福 5
シナモンロール 4


これにチョコレート(ランク4)を追加したいとします。
ただ、すでにチョコレートが登録されていたら、そのランクだけを変更したいという場合、ON DUPLICATE KEY UPDATEが便利です。

INSERT INTO myfavorite
(name, rank) VALUES ('チョコレート', '4')
ON DUPLICATE KEY UPDATE rank = VALUES(rank);

結果)

name rank
豆大福 5
シナモンロール 4
チョコレート 4


チョコレートのランクを5に変更して、一緒にオールドファッション(ランク4)も追加しておきたい場合はこんな感じです。

INSERT INTO myfavorite
(name, rank) VALUES ('チョコレート', '5'), ('オールドファッション', '4')
ON DUPLICATE KEY UPDATE rank = VALUES(rank);

結果)

name rank
豆大福 5
シナモンロール 4
チョコレート 5
オールドファッション 4


お腹すきました。