我正在运行数据库日志,每天我都登录新行。因此,Mysql查询将检查日期(日期(唯一键))是否已经存在,如果存在,它将尝试将日志行的所有可记录值增加一。如果日期记录还不存在,它将创建一个新行。
我的SQL查询是:
INSERT INTO `log` (`date`,`hits`,`stale`)
VALUES ('2012-03-06',1,1)
ON DUPLICATE KEY
UPDATE `hits`=`hits`+1,`stale`=`stale`+1
WHERE `date`='2012-03-06';"
所有列的默认值均为0,因此如果此查询在午夜之后直接运行,则仅将“ stale”和“ hits”设置为1。否则,“ stale”和“ hits”都将增加。
我希望! (不起作用)。
我想念什么?我应该在'hits'='hits'+1和'stale'='stale'+ 1之间使用逗号以外的哪个分隔符?
最佳答案
您不应该具有WHERE
子句。 ON DUPLICATE KEY UPDATE
自动将其影响的行限制为具有现有键的行。
删除它,您的查询应该可以正常工作。
关于mysql - UPON DUPLICATE KEY增加多列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9590469/