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

sur la mise à jour de la clé en double avec une condition ?

Autre option :

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

Avertissement : Cela échouera si la valeur transmise pour count est NULL (au lieu de 2 ). Il mettra à jour la colonne avec NULL . Donc, il vaut mieux utiliser le IF() ou un CASE clause.

A moins que vous ne préfériez le (il y va de l'élégance...) :

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