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