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

时间:2016-12-03 17:14:06

标签: mysql sql if-statement conditional

像:

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字段在UPDATE的情况下不会获得新值。

请注意,我使用它在一个查询中进行多次插入/更新,只是在这个例子中它只有一组值。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我还没有测试过,但我几乎肯定你必须切换查询的最后两行,这样你才能首先设置modified并将count设置为VALUES({{1} }),否则count设置为GREATEST且永远不会更大count