Mysql
 sql >> Database >  >> RDS >> Mysql

sull'aggiornamento della chiave duplicata con una condizione?

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