在 MySQL 中,我可以在 INSERT 上下文中使用 IF 吗?

In MySQL, can I use IF in INSERT context?

喜欢:

INSERT INTO `video_play_counts`
   (`id`,`video_id`,`date`,`count`,`created`,`modified`) 
VALUES 
   ("",1,"2016-12-01",26,"2016-12-03 17:51:53","2016-12-03 17:51:53") 
ON DUPLICATE KEY UPDATE 
  `count` = GREATEST(`count`,VALUES(`count`)), 
  `modified` = IF(VALUES(`count`) > `count`,VALUES(`modified`),`modified`)

所以,我在 video_iddate 上有一个唯一键,当我对这个唯一键进行更新时,如果新的 count 值更大现有的,我还想相应地更新 modified 字段。 count 字段按预期更新,但 modified 字段在更新的情况下未获得新值。

请注意,我使用它在一个查询中执行多个 insert/update,只是在这个例子中它只有一组值。

我做错了什么?

我没有测试过,但我几乎可以肯定您必须切换查询的最后两行,以便您首先设置 modified 并将 count 设置为 VALUES(count), 否则计数设置为最大且永远不会大于 count