Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Erstellen, wenn ein Eintrag nicht vorhanden ist, sonst aktualisieren?

Viele Entwickler führen immer noch eine Abfrage aus, um zu überprüfen, ob ein Feld in einer Tabelle vorhanden ist, und führen dann eine Einfüge- oder Aktualisierungsabfrage entsprechend dem Ergebnis der ersten Abfrage aus. Versuchen Sie es mit der ON DUPLICATE KEY-Syntax, das ist viel schneller und besser dann 2 Abfragen ausführen. Weitere Informationen finden Sie hier

Wenn Sie denselben Wert für c beibehalten möchten, können Sie ein Update mit demselben Wert durchführen

der Unterschied zwischen 'ersetzen' und 'auf doppeltem Schlüssel':

Wenn Ihre Tabelle keinen Primärschlüssel oder eindeutigen Schlüssel hat, macht das Ersetzen keinen Sinn.

Sie können auch die VALUES verwenden um die tatsächlichen Werte nicht doppelt angeben zu müssen. Z.B. statt

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

Sie können verwenden

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

Wobei VALUES(c) wird mit dem zuvor angegebenen Wert ausgewertet (6).