Heim > Datenbank > MySQL-Tutorial > Warum schlagen INSERT-Abfragen mit einer WHERE-Klausel in MySQL fehl?

Warum schlagen INSERT-Abfragen mit einer WHERE-Klausel in MySQL fehl?

DDD
Freigeben: 2025-01-19 06:40:10
Original
966 Leute haben es durchsucht

Why Do INSERT Queries Fail with a WHERE Clause in MySQL?

MySQL INSERT-Anweisungen und die WHERE-Klausel: Eine häufige Falle

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:

Neuen Benutzer hinzufügen

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>
Nach dem Login kopieren

Dadurch werden id, weight und desiredWeight direkt Werte zugewiesen, wodurch ein neuer Benutzerdatensatz erstellt wird.

Ändern eines vorhandenen Benutzers

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>
Nach dem Login kopieren

Dadurch werden die weight und desiredWeight für den Benutzer mit id = 1 geändert, ohne dass sich dies auf andere Einträge auswirkt.

Alternative Methoden: Bedingte Einfügungen und Aktualisierungen

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage