Heim >Datenbank >MySQL-Tutorial >Warum schlägt meine MySQL-INSERT-Abfrage fehl, wenn ich eine WHERE-Klausel verwende?

Warum schlägt meine MySQL-INSERT-Abfrage fehl, wenn ich eine WHERE-Klausel verwende?

DDD
DDDOriginal
2025-01-19 06:52:12980Durchsuche

Why Does My MySQL INSERT Query Fail When Using a WHERE Clause?

Fehlerbehebung bei MySQL INSERT-Anweisungen und WHERE-Klauseln

MySQLs INSERT-Anweisung unterstützt keine WHERE-Klausel. Der Versuch, eines zu verwenden, führt zu einem Fehler. Die WHERE-Klausel wird zum Filtern von Daten in SELECT-, UPDATE- und DELETE-Anweisungen verwendet, nicht zum Einfügen.

Lassen Sie uns ein häufiges Szenario untersuchen:

<code class="language-sql">INSERT INTO Users (weight, desiredWeight) VALUES (160, 145) WHERE id = 1;</code>

Diese Abfrage zielt darauf ab, nur dann eine neue Zeile hinzuzufügen, wenn eine Zeile mit id = 1 vorhanden ist, wodurch diese Zeile effektiv aktualisiert wird. Dies ist eine falsche INSERTVerwendung.

Richtige Ansätze:

Die Lösung hängt von Ihrem gewünschten Ergebnis ab:

  • Neue Zeile hinzufügen: Um eine neue Zeile, einschließlich eines id, einzufügen, verwenden Sie:
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES (1, 160, 145);</code>
  • Ändern einer vorhandenen Zeile: Um eine vorhandene Zeile zu aktualisieren, verwenden Sie UPDATE:
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
  • Einfügen oder Aktualisieren (Bedingt): Um eine neue Zeile einzufügen oder eine vorhandene Zeile basierend auf einem eindeutigen Schlüssel zu aktualisieren, verwenden Sie 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>
  • Automatisch inkrementierende IDs: Wenn id eine automatisch inkrementierende Spalte ist, lassen Sie sie in der INSERT-Anweisung weg:
<code class="language-sql">INSERT INTO Users (weight, desiredWeight) VALUES (160, 145);</code>

Durch die Verwendung des richtigen SQL-Befehls vermeiden Sie Fehler und erreichen die beabsichtigte Datenmanipulation in Ihrer MySQL-Datenbank.

Das obige ist der detaillierte Inhalt vonWarum schlägt meine MySQL-INSERT-Abfrage fehl, wenn ich eine WHERE-Klausel verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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