Ett annat alternativ:
INSERT INTO tbl (count, otherID)
VALUES (2, 'a')
ON DUPLICATE KEY UPDATE
count = GREATEST(VALUES(count), count) ;
Varning: Detta kommer att misslyckas om det godkända värdet för count
är NULL
(istället för 2
). Den uppdaterar kolumnen med NULL
. Så det är bättre att använda IF()
eller ett CASE
klausul.
Om du inte föredrar (där går elegansen ...):
ON DUPLICATE KEY UPDATE
count = GREATEST(COALESCE(VALUES(count), count), count) ;