Warunkowo NA DUPLIKOWANEJ AKTUALIZACJI KLUCZA (Aktualizacja tylko wtedy, gdy są spełnione pewne warunki)

Mam następujące zapytanie:

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

Jednak chcę też zrobićON DUPLICATE KEY UPDATE warunkowy, więc wykona następujące czynności:

JEŚLI lastupdate było mniej niż 20 minut temu (lastupdate > NOW() - INTERVAL 20 MINUTE).Prawdziwe: Aktualizacjalastupdate = NOW(), dodaj jeden doprogramruncount a następnie zaktualizujip = :ip.Fałszywy: Wszystkie pola należy pozostawić takie same.

Nie jestem pewien, jak bym to zrobił, ale po rozejrzeniu się spróbowałem użyćIF Oświadczenie wON DUPLICATE KEY UPDATE część.

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);

Jednak otrzymuję następujący błąd:#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

questionAnswers(1)

yourAnswerToTheQuestion