En anden mulighed:
INSERT INTO tbl (count, otherID)
VALUES (2, 'a')
ON DUPLICATE KEY UPDATE
count = GREATEST(VALUES(count), count) ;
Advarsel: Dette vil mislykkes, hvis den beståede værdi for count
er NULL
(i stedet for 2
). Det vil opdatere kolonnen med NULL
. Så det er bedre at bruge IF()
eller en CASE
klausul.
Medmindre du foretrækker (der går elegancen ...):
ON DUPLICATE KEY UPDATE
count = GREATEST(COALESCE(VALUES(count), count), count) ;