sql >> Databasteknik >  >> RDS >> Mysql

Skapa om en post inte finns, annars uppdatera?

Många utvecklare kör fortfarande en fråga för att kontrollera om ett fält finns i en tabell och kör sedan en infognings- eller uppdateringsfråga enligt resultatet av den första frågan. Testa att använda syntaxen ON DUPLICATE KEY, detta är mycket snabbare och bättre kör sedan 2 frågor. Mer information finns här

om du vill behålla samma värde för c kan du göra en uppdatering med samma värde

skillnaden mellan 'ersätt' och 'på duplicate key':

om din tabell inte har en primärnyckel eller unik nyckel, är ersättningen inte meningsfull.

Du kan också använda VALUES funktion för att undvika att behöva ange de faktiska värdena två gånger. T.ex. istället för

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=6;

du kan använda

INSERT INTO table (a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

Där VALUES(c) kommer att utvärderas till det värde som specificerats tidigare (6).



  1. SQL Server Update Trigger, få endast modifierade fält

  2. Hur OCT()-funktionen fungerar i MySQL

  3. Postgres-begränsning för unikt datumintervall

  4. Infogar preparerat statement till databasen - PSQL