Un'altra opzione:
INSERT INTO tbl (count, otherID)
VALUES (2, 'a')
ON DUPLICATE KEY UPDATE
count = GREATEST(VALUES(count), count) ;
Avviso: Questo fallirà se il valore passato per count
è NULL
(invece di 2
). Aggiornerà la colonna con NULL
. Quindi, è meglio usare IF()
o un CASE
clausola.
A meno che tu non preferisca il (c'è l'eleganza...):
ON DUPLICATE KEY UPDATE
count = GREATEST(COALESCE(VALUES(count), count), count) ;