Inna opcja:
INSERT INTO tbl (count, otherID)
VALUES (2, 'a')
ON DUPLICATE KEY UPDATE
count = GREATEST(VALUES(count), count) ;
Ostrzeżenie: To się nie powiedzie, jeśli przekazana wartość dla count
jest NULL
(zamiast 2
). Zaktualizuje kolumnę o NULL
. Dlatego lepiej jest użyć IF()
lub CASE
klauzula.
Chyba że wolisz (idzie elegancja...):
ON DUPLICATE KEY UPDATE
count = GREATEST(COALESCE(VALUES(count), count), count) ;