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