INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO]tbl_name
[(col_name
,...)] SELECT ... [ ON DUPLICATE KEY UPDATEcol_name
=expr
, ... ]
Mit INSERT ... SELECT
können Sie schnell
mehrere Datensätze aus einer oder mehreren Tabellen in eine
Tabelle einfügen. Zum Beispiel:
INSERT INTO tbl_temp2 (fld_id) SELECT tbl_temp1.fld_order_id FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;
Die folgenden Bedingungen gelten für eine INSERT ...
SELECT
-Anweisung:
Geben Sie IGNORE
an, um Datensätze zu
ignorieren, die unzulässige Schlüsseldubletten erzeugen
würden.
DELAYED
wird bei INSERT ...
SELECT
ignoriert.
Die Zieltabelle der INSERT
-Anweisung
kann in der FROM
-Klausel des
SELECT
-Teils der Abfrage erscheinen.
(Dies war bei einigen älteren MySQL-Versionen nicht
möglich.)
AUTO_INCREMENT
-Spalten arbeiten wie
gewöhnlich.
Um sicherzustellen, dass das Binärlog zur
Wiederherstellung der Originaltabellen verwendet werden
kann, gestattet MySQL keine nebenläufigen
Einfügeoperationen während der Ausführung einer
INSERT ... SELECT
-Anweisung.
Zurzeit können Sie in einer Unterabfrage keine Einfügeoperation in eine Tabelle durchführen und gleichzeitig eine Auswahl in einer anderen Tabelle treffen.
Im Werteteil von ON DUPLICATE KEY UPDATE
können Sie Spalten in anderen Tabellen referenzieren, solange
Sie im SELECT
-Teil nicht GROUP
BY
verwenden. Eine Begleiterscheinung besteht darin,
dass Sie nichteindeutige Spaltennamen im Werteteil
qualifizieren müssen.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.