Mysql
 sql >> Base de données >  >> RDS >> Mysql

Conditionnel ON DUPLICATE KEY UPDATE (Mettre à jour uniquement si certaines conditions sont vraies)

vous utilisez l'instruction IF de manière incorrecte

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

donc IF vérifie une condition et renvoie l'une des deux valeurs fournies en tant que paramètres. Voir Opérateurs de contrôle de flux MySQL .