sql >> Base de Datos >  >> RDS >> Mysql

en la actualización de clave duplicada con una condición?

Otra opción:

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

Advertencia: Esto fallará si el valor pasado para count es NULL (en lugar de 2 ). Actualizará la columna con NULL . Entonces, es mejor usar el IF() o un CASE cláusula.

A no ser que prefieras la (ahí va la elegancia...):

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