MySQLでINSERT INTO hoge VALUES (...), (...), (...)
のbulk insertでon duplicate key update(すでにレコードがあったらUPDATEで上書きする)って併用できるのかな?っていうのが気になったので調べてみたらできるみたい。VALUES関数というその目的のためだけに存在するような関数を使う。
こんな感じでテーブル作って
CREATE TABLE users ( name VARCHAR(255) NOT NULL, age TINYINT UNSIGNED NOT NULL, PRIMARY KEY (name) ) ENGINE=InnoDB;
データをINSERTして
INSERT INTO users VALUES ('akuwano', 25), ('oinume', 24), ('oranie', 23); SELECT * FROM users; +---------+-----+ | name | age | +---------+-----+ | akuwano | 25 | | oinume | 24 | | oranie | 23 | +---------+-----+
INSERT ... ON DUPLICATE KEY UPDATE
で重複したレコードがあった場合に全てアップデートされるかな?
INSERT INTO users VALUES ('akuwano', 15), ('oinume', 14), ('oranie', 13) ON DUPLICATE KEY UPDATE age = VALUES(age); mysql> SELECT * FROM users; +---------+-----+ | name | age | +---------+-----+ | akuwano | 15 | | oinume | 14 | | oranie | 13 | +---------+-----+
された!!
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,菊池研自,株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/11/25
- メディア: 大型本
- この商品を含むブログ (7件) を見る