sql >> Database >  >> RDS >> Mysql

op dubbele sleutelupdate met een voorwaarde?

Een andere optie:

INSERT INTO tbl (count, otherID) 
  VALUES (2, 'a') 
ON DUPLICATE KEY UPDATE 
  count = GREATEST(VALUES(count), count) ;

Waarschuwing: Dit mislukt als de doorgegeven waarde voor count is NULL (in plaats van 2 ). Het zal de kolom bijwerken met NULL . Het is dus beter om de IF() . te gebruiken of een CASE clausule.

Tenzij je de voorkeur geeft aan (daar gaat de elegantie ...):

ON DUPLICATE KEY UPDATE 
  count = GREATEST(COALESCE(VALUES(count), count), count) ;


  1. JSON_CONTAINS_PATH() Voorbeelden in MySQL

  2. MySQL-query werkt niet tijdens gebruik van php-variabele in where-clausule

  3. Oracle:CSV-bestand importeren

  4. MySQL versus SQL Server versus Oracle