我已经使用UPDATE语句成功完成了此操作,但不是REPLACE。
我在用户签出时在mysql表中保存喜欢的项目。
表Favs是:
USER (int)
ITEM (int)
COUNT (int default 0)
我正在尝试的SQL是:
REPLACE INTO favs (user,item,count) VALUES ('1','3', count + 1)
虽然它没有抛出任何错误,但它似乎也没有增加值。
这可能吗?谢谢。
答案 0 :(得分:21)
在替换时看起来它不像这样工作。来自manual:
你不能从中引用数值 当前行并在新的中使用它们 行。如果你使用诸如的作业 SET col_name = col_name + 1,the 引用上的列名 右手边被视为 DEFAULT(col_name),所以赋值 相当于SET col_name = DEFAULT(col_name)+ 1。
编辑:
但是,INSERT ... ON DUPLICATE UPDATE可能会做你想要完成的事情:
INSERT INTO favs (user, item) VALUES (2, 3)
ON DUPLICATE KEY UPDATE count = count + 1;