概要
MySQLでINSERTをするときに重複してエラーが発生。
なので、重複したときにUPDATEして欲しい。
環境
- MySQL: Ver 15.1
解決策
INSERT INTO sample (id, name) VALUES (%s, %s) ON DUPLICATE KEY UPDATE id=VALUES(id), city_name=VALUES(name)
詳細
ON DUPLICATE KEY UPDATE
MySQLにのみに採用されている書き方でON DUPLICATE KEY UPDATE
というものがある。
本来は格納されている値を+1したりするように使われている
INSERT IGNORE INTO
似たようなものでINSERT IGNORE INTO
という構文もあった。
こちらは重複があったときに無視する(更新しない)という構文らしい。
まとめ
ON DUPLICATE KEY UPDATE
は重複があったときに更新
INSERT IGNORE INTO
は重複があったときに無視(更新しない)