sql >> Databasteknik >  >> RDS >> Mysql

Lägga till i ett databasfält istället för att skriva över det (MySQL UPDATE-funktion)

Försök att använda INSERT ... ON DUPLICATE KEY UPDATE

Om du anger ON DUPLICATE KEY UPDATE, och en rad infogas som skulle orsaka ett duplikatvärde i ett UNIKT index eller PRIMÄR KEY, utför MySQL en UPPDATERING av den gamla raden.

Till exempel, om kolumn a deklareras som UNIQUE och innehåller värdet 1, har följande två påståenden liknande effekt:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

UPDATE table SET c=c+1 WHERE a=1;

(Effekterna är inte identiska för en tabell där a är en kolumn för automatisk ökning. Med en kolumn för automatisk ökning, en INSERT uttalandet ökar värdet för automatisk ökning men UPDATE inte.)

ON DUPLICATE KEY UPDATE-satsen kan innehålla flera kolumntilldelningar, separerade med kommatecken.

Med ON DUPLICATE KEY UPDATE är värdet för berörda rader per rad 1 om raden infogas som en ny rad och 2 om en befintlig rad uppdateras.

Hoppas detta hjälper.




  1. Hur man importerar oracle dump från ec2-instans till RDS i AWS

  2. Talande många-till-många-till-många - hur man enkelt laddar distansrelationer

  3. hur man lägger till en ny kolumn varje gång jag kör ett pythonprogram

  4. MYSQL inklusive värden för datum med noll objektantal