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 |
お腹すきました。