Heim >Datenbank >MySQL-Tutorial >Warum schlagen INSERT-Abfragen mit einer WHERE-Klausel in MySQL fehl?
Die Verwendung einer WHERE-Klausel innerhalb einer MySQL-INSERT-Anweisung führt zu einem Fehler. Dies liegt daran, dass die WHERE-Klausel speziell für UPDATE- und DELETE-Vorgänge und nicht für INSERTs konzipiert ist.
Die bereitgestellte Abfrage zielt wahrscheinlich darauf ab, entweder einen neuen Benutzer hinzuzufügen oder einen vorhandenen zu ändern. Lassen Sie uns beide Szenarien klären:
Um einen neuen Benutzer mit der ID 1 einzufügen, lautet die korrekte MySQL-Syntax:
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
Dadurch werden id
, weight
und desiredWeight
direkt Werte zugewiesen, wodurch ein neuer Benutzerdatensatz erstellt wird.
Wenn das Ziel darin besteht, einen vorhandenen Benutzer zu aktualisieren, verwenden Sie die UPDATE-Anweisung:
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
Dadurch werden die weight
und desiredWeight
für den Benutzer mit id = 1
geändert, ohne dass sich dies auf andere Einträge auswirkt.
Um sowohl das Einfügen als auch das Aktualisieren basierend auf der Datensatzexistenz zu handhaben, ziehen Sie die folgenden Alternativen in Betracht:
INSERT ... ON DUPLICATE KEY UPDATE
:<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145) ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;</code>
Dadurch wird eine neue Zeile eingefügt, wenn der Schlüssel nicht vorhanden ist. Andernfalls wird die vorhandene Zeile aktualisiert.
INSERT ... SET
: (Obwohl diese Syntax funktional der oben genannten VALUES-Methode ähnelt, wird sie aus Gründen der Übersichtlichkeit oft weniger bevorzugt)Denken Sie daran: Wenn id
eine Spalte mit automatischer Inkrementierung ist, können Sie sie in der INSERT-Anweisung weglassen. MySQL generiert automatisch eine eindeutige ID.
Das obige ist der detaillierte Inhalt vonWarum schlagen INSERT-Abfragen mit einer WHERE-Klausel in MySQL fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!