Mysql
 sql >> Datenbank >  >> RDS >> Mysql

auf doppelte Schlüsselaktualisierung mit einer Bedingung?

Eine weitere Option:

INSERT INTO tbl (count, otherID) 
  VALUES (2, 'a') 
ON DUPLICATE KEY UPDATE 
  count = GREATEST(VALUES(count), count) ;

Warnung: Dies schlägt fehl, wenn der übergebene Wert für count ist NULL (statt 2 ). Die Spalte wird mit NULL aktualisiert . Daher ist es besser, das IF() zu verwenden oder ein CASE Klausel.

Es sei denn, Sie bevorzugen die (da geht die Eleganz ...):

ON DUPLICATE KEY UPDATE 
  count = GREATEST(COALESCE(VALUES(count), count), count) ;