该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
字段是 aUNIQUE
或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