このREPLACE ... INTO
構文は、必要に応じて新しい行を挿入し、既存の行に対して削除 + 挿入を行います。
# deletes existing and inserts new row:
REPLACE INTO users SET score = 2000, username = 'User01';
# deletes existing and inserts new row
REPLACE INTO users SET score = 3000, username = 'User02';
# inserts new row
REPLACE INTO users SET score = 4000, username = 'User04';
http://dev.mysql.com/doc/refman/5.0/en/replace.html
ただし、私のお気に入りの方法はON DUPLICATE KEY
構文を使用することです。主に、行を削除してから再挿入すると、既存の行を更新するよりも「費用がかかる」と常に想定していたためです。username
フィールドがUNIQUE
またはインデックスであると仮定するとPRIMARY KEY
、次のことができます。
# Updates existing User01 row
INSERT INTO users SET score = 2000, username = 'User01' ON DUPLICATE KEY UPDATE score = 2000;
# Updates existing User02 row
INSERT INTO users SET score = 3000, username = 'User02' ON DUPLICATE KEY UPDATE score = 2000;
# Inserts new User04 row
INSERT INTO users SET score = 4000, username = 'User04' ON DUPLICATE KEY UPDATE score = 2000;
http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html