Heim >Datenbank >MySQL-Tutorial >Wie können alle Spalten effizient beibehalten werden, wenn MySQLs INSERT INTO...SELECT verwendet wird?
Spaltendaten mit effizientem INSERT INTO...SELECT beibehalten
Beim Übertragen von Daten von einer MySQL-Tabelle in eine andere unter Beibehaltung aller Spalten a Es entsteht eine gemeinsame Herausforderung. Mit dem Format INSERT INTO this_table_archive (*) VALUES (SELECT * FROM this_table WHERE enter_date < '2011-01-01 00:00:00'); führt möglicherweise nicht zum gewünschten Ergebnis.
Die korrekte Syntax, wie im MySQL-Handbuch beschrieben, lautet wie folgt:
INSERT INTO this_table_archive (col1, col2, ..., coln) SELECT col1, col2, ..., coln FROM this_table WHERE entry_date < '2011-01-01 00:00:00';
Dieses überarbeitete Format benennt jede Spalte in der Zieltabelle explizit und stellt so sicher dass alle Daten ordnungsgemäß kopiert werden.
Wenn außerdem die ID-Spalte als automatische Inkrementierung konfiguriert ist und beide Tabellen Daten enthalten, kann es von Vorteil sein, diese aus der Spalte auszuschließen Liste. Dies verhindert potenzielle Konflikte durch das Einfügen doppelter IDs. Wenn die Zieltabelle jedoch leer ist, ist diese Auslassung nicht erforderlich.
Das obige ist der detaillierte Inhalt vonWie können alle Spalten effizient beibehalten werden, wenn MySQLs INSERT INTO...SELECT verwendet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!