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