MySQLテーブルへの挿入、または存在する場合の更新

データベースのテーブルに行を追加したいのですが、同じユニークキーを持つ行が存在する場合、その行を更新したいのです。

例えば、以下のようになります。

insert into table (id, name, age) values(1, "A", 19)

例えば、ユニークキーが id で、データベースに id = 1 の行があるとします。この場合、その行をこれらの値で更新したいと思います。通常、これはエラーになります。もし insert IGNORE を使うと、エラーを無視しますが、それでも更新されません。

ソリューション

INSERT ... ON DUPLICATE KEY UPDATE`]1を使用します。

QUERY:

INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
name="A", age=19
解説 (23)

REPLACEのチェックアウト

http://dev.mysql.com/doc/refman/5.0/en/replace.html

REPLACE into table (id, name, age) values(1, "A", 19)
解説 (7)

試しにやってみてください。

INSERT INTO table (id, name, age) VALUES (1, 'A', 19) ON DUPLICATE KEY UPDATE id = id + 1;

ご参考になれば幸いです。

解説 (6)