sql >> Databasteknik >  >> RDS >> Mysql

på dubblettnyckeluppdatering med ett villkor?

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


  1. Hur man lägger till 1 till värdet av en kolumn i en befintlig rad i mysql

  2. Se om en tabell har en DEFAULT-begränsning i SQL Server med OBJECTPROPERTY()

  3. Hur man hittar datumformatet som används i den aktuella sessionen i SQL Server (T-SQL)

  4. PHP:mysql v mysqli v pdo