Bedingtes ON DUPLICATE KEY UPDATE (Aktualisierung nur, wenn eine bestimmte Bedingung wahr ist)

9

Ich habe die folgende Abfrage verwendet:

%Vor%

Ich möchte aber auch ON DUPLICATE KEY UPDATE konditional machen, also mache ich folgendes:

  • IF lastupdate war vor weniger als 20 Minuten ( lastupdate > NOW() - INTERVAL 20 MINUTE ).
  • Wahr: Aktualisieren Sie lastupdate = NOW() , fügen Sie einen zu programruncount hinzu und aktualisieren Sie dann ip = :ip .
  • False: Alle Felder sollten gleich bleiben.

Ich bin nicht wirklich sicher, wie ich das machen würde, aber nachdem ich mich umgesehen habe, habe ich versucht, eine IF Anweisung im ON DUPLICATE KEY UPDATE Teil zu verwenden.

%Vor%

Allerdings erhalte ich den folgenden Fehler: #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

    
Dan 16.05.2013, 13:10
quelle

1 Antwort

20

Sie verwenden IF-Anweisung falsch

%Vor%

So prüft IF nach einer Bedingung und gibt einen von zwei Werten zurück, die als Parameter angegeben wurden. Siehe Flow Control Operators von MySQL .

    
Arustamyan G. 16.05.2013, 13:25
quelle

Tags und Links