sql >> Database teknologi >  >> RDS >> Mysql

Opret hvis en post ikke eksisterer, ellers opdatere?

Mange udviklere udfører stadig en forespørgsel for at kontrollere, om et felt er til stede i en tabel, og udfører derefter en indsættelses- eller opdateringsforespørgsel i henhold til resultatet af den første forespørgsel. Prøv at bruge ON DUPLICATE KEY-syntaksen, det er meget hurtigere og bedre derefter udføre 2 forespørgsler. Du kan finde flere oplysninger her

hvis du vil beholde den samme værdi for c, kan du lave en opdatering med den samme værdi

forskellen mellem 'erstat' og 'på duplicate key':

hvis din tabel ikke har en primær nøgle eller unik nøgle, giver erstatningen ingen mening.

Du kan også bruge VALUES funktion for at undgå at skulle angive de faktiske værdier to gange. For eksempel. i stedet for

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

du kan bruge

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

Hvor VALUES(c) vil evaluere til den værdi, der er angivet tidligere (6).



  1. Python MySQL - SELECT'er virker, men ikke DELETE'er?

  2. Er PHP's null-værdi ikke lig med MySQL's null-værdi?

  3. Ret "Aritmetisk overløbsfejl ved konvertering af int til datatype numerisk" i SQL Server

  4. MYSQL - Sammenkæd to tabeller