Heim >Datenbank >MySQL-Tutorial >Warum ist eine WHERE-Klausel in einer MySQL-INSERT-Anweisung ungültig und welche Alternativen gibt es?

Warum ist eine WHERE-Klausel in einer MySQL-INSERT-Anweisung ungültig und welche Alternativen gibt es?

Barbara Streisand
Barbara StreisandOriginal
2025-01-19 06:53:08754Durchsuche

Why is a WHERE clause invalid in a MySQL INSERT statement, and what are the alternatives?

MySQL INSERT-Anweisungen: Warum WHERE-Klauseln ungültige und geeignete Alternativen sind

Einführung:

MySQLs INSERT-Anweisung fügt einer Tabelle neue Zeilen hinzu. Ein häufiger Fehler ist die Verwendung einer WHERE-Klausel innerhalb einer INSERT-Anweisung, die syntaktisch falsch ist. Dieser Artikel erklärt den Fehler und bietet wirksame Alternativen.

Falsche Abfrage und Erklärung:

Die folgende Abfrage ist ungültig:

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

Hiermit wird nur dann versucht, Werte in Users einzufügen, wenn eine Zeile mit id = 1 vorhanden ist. Die INSERT-Anweisung von MySQL unterstützt keine WHERE-Klauseln; Es ist für die bedingungslose Einfügung konzipiert.

Korrekte MySQL INSERT-Syntax:

Die Standard-INSERT-Syntax lautet:

<code class="language-sql">INSERT INTO table_name ( column1, column2, ... ) VALUES ( value1, value2, ... );</code>

Die WHERE-Klausel wird ausschließlich in SELECT-, UPDATE- und DELETE-Anweisungen verwendet.

Alternative Ansätze:

Um eine bedingte Einfügung oder Aktualisierung zu erreichen, ziehen Sie die folgenden Optionen in Betracht:

  • Einfügen einer neuen Zeile mit einer eindeutigen ID: Wenn id ein Primärschlüssel oder eine eindeutige Einschränkung ist, fügen Sie einfach die neue Zeile ein:
<code class="language-sql">INSERT INTO Users(id, weight, desiredWeight) VALUES(1, 160, 145);</code>
  • Aktualisieren einer vorhandenen Zeile: Verwenden Sie UPDATE, um einen vorhandenen Datensatz zu ändern:
<code class="language-sql">UPDATE Users SET weight = 160, desiredWeight = 145 WHERE id = 1;</code>
  • INSERT ... ON DUPLICATE KEY UPDATE: Dies kombiniert Einfügen und Aktualisieren. Wenn ein doppelter Schlüssel gefunden wird (z. B. ein vorhandener id), wird die Zeile aktualisiert; andernfalls wird eine neue Zeile eingefügt:
<code class="language-sql">INSERT INTO Users (id, weight, desiredWeight) VALUES(1, 160, 145) ON DUPLICATE KEY UPDATE weight=160, desiredWeight=145;</code>

Wichtige Überlegungen:

  • Automatisch inkrementierende id-Spalten: Wenn id automatisch inkrementiert, können Sie es in der INSERT-Anweisung weglassen; MySQL weist automatisch einen Wert zu.
  • Alternative INSERT ... ON DUPLICATE KEY UPDATE-Syntax: Das Obige kann auch wie folgt geschrieben werden:
<code class="language-sql">
INSERT INTO Users SET id = 1, weight = 160, desiredWeight = 145 ON DUPLICATE KEY UPDATE weight = 160, desiredWeight = 145;
```  This form is useful when updating only some columns.</code>

Das obige ist der detaillierte Inhalt vonWarum ist eine WHERE-Klausel in einer MySQL-INSERT-Anweisung ungültig und welche Alternativen gibt es?. 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