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 に答える