UPDATE记录(如果存在); 否则INSERT

Jas*_*son 3 mysql insert-update

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

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

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

Nul*_*ion 5

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

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

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


这与REPLACE(Fem​​aref的答案)之间的区别在于,如果密钥重复,REPLACE删除旧行然后插入新行,而这将更新现有行.