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

时间:2010-09-25 23:59:00

标签: mysql insert-update

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

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

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

2 个答案:

答案 0 :(得分: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删除旧行,然后插入新行密钥是重复的,而这将更新现有的行。

答案 1 :(得分:4)