Ich habe eine SQL-Abfrage, bei der ich mehrere Zeilen in eine einzelne Abfrage einfügen möchte. Also habe ich so etwas benutzt wie:
$sql = "INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29)";
mysql_query( $sql, $conn );
Das Problem ist, wenn ich diese Abfrage ausführe, möchte ich prüfen, ob ein UNIQUE
Schlüssel (der nicht der ist PRIMARY KEY
), z. B. 'name'
oben, überprüft werden soll, und wenn ein solcher 'name'
bereits vorhanden ist, sollte die entsprechende ganze Zeile aktualisiert werden, andernfalls eingefügt.
Wenn im folgenden Beispiel beispielsweise 'Katrina'
bereits in der Datenbank vorhanden ist, sollte die gesamte Zeile unabhängig von der Anzahl der Felder aktualisiert werden. Wenn dies 'Samia'
nicht der Fall ist, sollte die Zeile erneut eingefügt werden.
Ich dachte an:
INSERT INTO beautiful (name, age)
VALUES
('Helen', 24),
('Katrina', 21),
('Samia', 22),
('Hui Ling', 25),
('Yumie', 29) ON DUPLICATE KEY UPDATE
Hier ist die Falle. Ich blieb stecken und war verwirrt darüber, wie ich vorgehen sollte. Ich muss mehrere Zeilen gleichzeitig einfügen / aktualisieren. Bitte geben Sie mir eine Richtung. Vielen Dank.
quelle
INSERT INTO ... ON DUPLICATE KEY UPDATE funktioniert nur für MYSQL, nicht für SQL Server.
Für SQL Server können Sie dies umgehen, indem Sie zuerst eine temporäre Tabelle deklarieren, einen Wert in diese temporäre Tabelle einfügen und dann MERGE verwenden
So was:
quelle
Sie können Ersetzen anstelle von EINFÜGEN ... ON DUPLICATE KEY UPDATE verwenden.
quelle