sql >> Database >  >> RDS >> Mysql

Voorwaardelijk OP DUPLICATE KEY UPDATE (alleen bijwerken als aan bepaalde voorwaarde wordt voldaan)

je gebruikt het IF-statement verkeerd

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

dus IF controleert op een voorwaarde en retourneert een van de twee waarden die zijn opgegeven als parameters. Zie MySQL's Flow Control Operators .




  1. Paginering met OFFSET / FETCH:een betere manier

  2. Wat is NoSQL en hoe wordt het gebruikt?

  3. Zijn left outer joins en left joins hetzelfde?

  4. Oracle SQL:Kolom niet toegestaan