ここではMySQLでの実行方法を取り上げます。
構文
INSERT句で、ON duplicate key update
を利用することで実現できます。
INSERT INTO `テーブル名` (id, name) VALUES (1, 'りんご') ON duplicate key update id = 1 , name = 'ぱんだ';
ここでは次のようなテーブルを想定しています。 id列がプライマリとなりますので、idが重複するINSERT文の場合はUPDATEが実行されます。
mysql> desc test; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(64) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+
実行例
mysql> select * from test; +----+---------+ | id | name | +----+---------+ | 1 | foobar | | 2 | katsube | +----+---------+ mysql> INSERT INTO test (id, name) VALUES ( 1, "りんご") ON duplicate key update id=1, name="ぱんだ"; mysql> select * from test; +----+---------+ | id | name | +----+---------+ | 1 | ぱんだ | | 2 | katsube | +----+---------+
参考
関連書籍
SQL実践入門──高速でわかりやすいクエリの書き方 (WEB+DB PRESS plus)
posted with amazlet at 16.04.22
ミック
技術評論社
売り上げランキング: 7,281
技術評論社
売り上げランキング: 7,281