Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

na atualização de chave duplicada com uma condição?


Outra opção:
INSERT INTO tbl (count, otherID) 
  VALUES (2, 'a') 
ON DUPLICATE KEY UPDATE 
  count = GREATEST(VALUES(count), count) ;

Aviso: Isso falhará se o valor passado para count é NULL (em vez de 2 ). Ele atualizará a coluna com NULL . Então, é melhor usar o IF() ou um CASE cláusula.

A não ser que prefira o (lá se vai a elegância...):
ON DUPLICATE KEY UPDATE 
  count = GREATEST(COALESCE(VALUES(count), count), count) ;