Условно ON DUPLICATE KEY UPDATE (Обновлять, только если определенное условие истинно)

У меня следующий запрос используется:

INSERT INTO userlist (username, lastupdate, programruncount, ip)
VALUES (:username, NOW(), 1, :ip)
ON DUPLICATE KEY UPDATE
lastupdate = NOW(), programruncount = programruncount + 1, ip = :ip;

Тем не менее, я также хочу сделатьON DUPLICATE KEY UPDATE условно, поэтому он будет делать следующее:

ЕСЛИ lastupdate было меньше 20 минут назад (lastupdate > NOW() - INTERVAL 20 MINUTE).Правда: Обновитьlastupdate = NOW()добавить один кprogramruncount а затем обновитьip = :ip.Ложь: Все поля должны быть одинаковыми.

Я не совсем уверен, как бы я это сделал, но, посмотрев вокруг, я попытался использоватьIF Заявление вON DUPLICATE KEY UPDATE часть.

INSERT INTO userlist (username, lastupdate, programruncount, ip)
VALUES ("testuser", NOW(), "1", "127.0.0.1")
ON DUPLICATE KEY UPDATE
IF(lastupdate > NOW() - INTERVAL 20 MINUTE, VALUES(lastupdate, programruncount + 1),
lastupdate, programruncount);

Однако я получаю следующую ошибку:#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF(lastupdate > NOW() - INTERVAL 20 MINUTE, VALUES(lastupdate, programruncount +' at line 6

Ответы на вопрос(1)

Ваш ответ на вопрос