1

这个查询显然不起作用,因为它是 MySQL 和 PHP 的混合体,它只是用可读的术语解释我的目标:

INSERT INTO table 
    (userid, courseid, valid_days, valid_to) 
VALUES 
    ('1', '1', '28', '1401732028') 
ON DUPLICATE KEY UPDATE 
    (If the existing records valid_to == 0 || NULL){ 
         //then add the value of valid_days to the existing records valid_days field
    }else{
         //then turn the submitted valid_days (28) into seconds and add it to the existing valid_to value
    }

我希望这是有道理的,并且很抱歉以可怕的方式使用 PHP 和 MySQL 来解释问题:)

谢谢!

4

1 回答 1

3

您可以在逻辑中使用if()和。我可能不明白这样做的目的,但我认为以下实现了它:caseon duplicate key update

INSERT INTO table (userid, courseid, valid_days, valid_to) 
    VALUES ('1', '1', '28', '1401732028') 
    ON DUPLICATE KEY UPDATE 
        valid_days = (case when valid_to = 0 or valid_to is null
                           then valid_days + values(valid_days)
                           else valid_days
                      end),
        valid_to = (case when valid_to > 0
                         then valid_to + values(valid_days)*60*60*24
                         else valid_to
                    end);
于 2014-06-02T19:29:07.850 回答