在 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_id
和 date
上有一个唯一键,当我对这个唯一键进行更新时,如果新的 count
值更大现有的,我还想相应地更新 modified
字段。
count
字段按预期更新,但 modified
字段在更新的情况下未获得新值。
请注意,我使用它在一个查询中执行多个 insert/update,只是在这个例子中它只有一组值。
我做错了什么?
我没有测试过,但我几乎可以肯定您必须切换查询的最后两行,以便您首先设置 modified
并将 count
设置为 VALUES(count
), 否则计数设置为最大且永远不会大于 count
喜欢:
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_id
和 date
上有一个唯一键,当我对这个唯一键进行更新时,如果新的 count
值更大现有的,我还想相应地更新 modified
字段。
count
字段按预期更新,但 modified
字段在更新的情况下未获得新值。
请注意,我使用它在一个查询中执行多个 insert/update,只是在这个例子中它只有一组值。
我做错了什么?
我没有测试过,但我几乎可以肯定您必须切换查询的最后两行,以便您首先设置 modified
并将 count
设置为 VALUES(count
), 否则计数设置为最大且永远不会大于 count