MySQLで重複があったときにUPDATEして欲しい

概要

MySQLでINSERTをするときに重複してエラーが発生。
なので、重複したときにUPDATEして欲しい。

環境

解決策

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というものがある。

dev.mysql.com

本来は格納されている値を+1したりするように使われている

INSERT IGNORE INTO

似たようなものでINSERT IGNORE INTOという構文もあった。

dev.mysql.com

こちらは重複があったときに無視する(更新しない)という構文らしい。

まとめ

ON DUPLICATE KEY UPDATE重複があったときに更新
INSERT IGNORE INTO重複があったときに無視(更新しない)

参考

qiita.com