我想更新表中可能存在或可能不存在的记录。如果它不在数据库中,那么它将被插入。
为防止选择我首先使用UPDATE
语句,如果没有,则检查affected_rows > 0
然后我将此记录插入表中。
我想知道是否有更好的方法来做到这一点?
答案 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)
使用Replace
代替Insert
。