sql >> Database teknologi >  >> RDS >> Mysql

Betinget VED DUPLIKAT NØGLEOPDATERING (Opdater kun, hvis en bestemt betingelse er sand)

du bruger IF-sætningen forkert

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

så IF kontrollerer for en betingelse og returnerer en af ​​de to værdier, der er angivet som dens parametre. Se MySQL's Flow Control Operators .




  1. får en fejl under definering af hændelsesnavnet på mysqlworkbench 5.5

  2. Hvad er fordele og ulemper ved at udføre beregninger i sql vs. i din ansøgning

  3. Sådan rettes "EXECUTE-sætningen mislykkedes, fordi dens WITH RESULT SETS-klausul specificerede 2 kolonne(r) for resultatsæt..." Meddelelse 11537 i SQL Server

  4. MySQL rollback på transaktion med mistet/afbrudt forbindelse