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:
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>
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:
id
-Spalten: Wenn id
automatisch inkrementiert, können Sie es in der INSERT
-Anweisung weglassen; MySQL weist automatisch einen Wert zu.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!