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
Freigeben: 2025-01-19 06:53:08
Original
727 Leute haben es durchsucht

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

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

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

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

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!

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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage