3

我想更新可能存在或不存在于表中的记录。如果它不存在于数据库中,那么它将被插入。

为了防止选择,我UPDATE首先使用语句并检查affected_rows > 0是否没有,然后我将此记录插入表中。

我想知道是否有更好的方法来做到这一点?

4

2 回答 2

5

你可以使用INSERT ... ON DUPLICATE KEY UPDATE语法:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

http://dev.mysql.com/doc/refman/4.1/en/insert-on-duplicate.html


这与REPLACE(Femaref 的答案)之间的区别在于,如果键重复,REPLACE它将删除旧行,然后插入新行,而这将更新现有行。

于 2010-09-26T00:02:16.870 回答
4

使用Replace而不是Insert.

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

于 2010-09-26T00:02:09.780 回答