sql >> Databasteknik >  >> RDS >> Mysql

MySQL - ignorera infogningsfel:dubblettpost

Du kan använda INSERT... IGNORE syntax om du inte vill vidta någon åtgärd när det finns en dubblettpost.

Du kan använda REPLACE INTO syntax om du vill skriva över en gammal post med en ny med samma nyckel.

Eller så kan du använda INSERT... ON DUPLICATE NYCKELUPPDATERING syntax om du istället vill utföra en uppdatering av posten när du stöter på en dubblett.

Edit:Tänkte lägga till några exempel.

Exempel

Säg att du har en tabell som heter tbl med två kolumner, id och value . Det finns en post, id=1 och värde=1. Om du kör följande satser:

REPLACE INTO tbl VALUES(1,50);

Du har fortfarande en post, med id=1 värde=50. Observera att hela posten raderades först och sedan infogades igen. Sedan:

INSERT IGNORE INTO tbl VALUES (1,10);

Åtgärden körs framgångsrikt, men ingenting har infogats. Du har fortfarande id=1 och värde=50. Till sist:

INSERT INTO tbl VALUES (1,200) ON DUPLICATE KEY UPDATE value=200;

Du har nu en enda post med id=1 och värde=200.



  1. Laddar ner MySQL-dump från kommandoraden

  2. Hur man överför mysql-tabellrader till kolumner

  3. Uppdaterar från MYSQL till MYSQLI

  4. SQL Server kumulativ summa per grupp