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

på dublet nøgleopdatering med en betingelse?

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


  1. PHP :indsæt flere afkrydsningsfelter i én MySQL-kolonne

  2. Django:Bordet findes ikke

  3. Xampp MySQL starter ikke - Forsøger at starte MySQL-tjenesten...

  4. Hvordan virker contains() i PL-SQL?