sql >> Database >  >> RDS >> Mysql

Toevoegen aan een databaseveld in plaats van het te overschrijven (MySQL UPDATE-functie)

Probeer INSERT ... ON DUPLICATE KEY UPDATE . te gebruiken

Als u ON DUPLICATE KEY UPDATE opgeeft en een rij wordt ingevoegd die een dubbele waarde in een UNIEKE index of PRIMARY KEY zou veroorzaken, voert MySQL een UPDATE van de oude rij uit.

Als kolom a bijvoorbeeld is gedeclareerd als UNIQUE en de waarde 1 bevat, hebben de volgende twee instructies een vergelijkbaar effect:

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;

(De effecten zijn niet identiek voor een tabel waarin a een auto-increment kolom is. Bij een auto-increment kolom, een INSERT statement verhoogt de auto-increment waarde maar UPDATE niet.)

De ON DUPLICATE KEY UPDATE-clausule kan meerdere kolomtoewijzingen bevatten, gescheiden door komma's.

Met ON DUPLICATE KEY UPDATE is de waarde van de betreffende rijen per rij 1 als de rij wordt ingevoegd als een nieuwe rij, en 2 als een bestaande rij wordt bijgewerkt.

Hoop dat dit zal helpen.




  1. PL/pgSQL presteren versus uitvoeren

  2. ORA-01775:doorlopende reeks synoniemen maar er zijn geen synoniemen

  3. MySQL-highscores - Persoonlijke ranglijsten van gebruikers:dubbele invoer die onjuiste waarden veroorzaakt

  4. Oracle als tijdelijke oplossing voor het muteren van tabellen