Wählen Sie in MySQL


85

Ich bin ein MSSQL-Benutzer und konvertiere jetzt meine Datenbank in MySQL. Ich schreibe die folgende Abfrage in MySQL:

select * into new_tbl from tbl

Und ich bekomme folgenden Fehler

Error : Undeclared variable new_tbl

Wie sollte eine solche Abfrage in MySQL richtig geschrieben werden?

Antworten:


125

Verwenden Sie die Syntax CREATE TABLE SELECT.

http://dev.mysql.com/doc/refman/5.0/en/create-table-select.html

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

Der Befehl SELECT INTO erstellt eine neue Tabelle und kann Daten von einer Datenbank in eine andere kopiert werden als
Shankar Regmi

3
Die korrekte Syntax lautet: CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
csname1910

CREATE ... SELECT funktioniert, dies sollte die akzeptierte Antwort sein. Das Schlüsselwort "AS" ist anscheinend optional und SELECT INTO funktioniert nicht mit MySQL.
Leo

Hervorheben, dass keine Indizes erstellt werden!
Ivan Ivković

89

In MySQL sollte es so sein

INSERT INTO this_table_archive (col1, col2, ..., coln)
SELECT col1, col2, ..., coln
FROM this_table
WHERE entry_date < '2011-01-01 00:00:00';

MySQL-Dokumentation


8
Subtiler Unterschied. In diesem Fall muss die Tabelle vorhanden sein. Denn select intodas tut es nicht. In der Tat denke ich, dass es ein Fehler ist, wenn es tut. Daher sollte dieser Lösung Anweisungen vorangestellt werden, die das Tabellenschema duplizieren.
Paxdiablo

Wie paxdiablo sagt, muss die Tabelle, in die Sie einfügen, bereits vorhanden sein. Die MSSQL-Syntax, mit der OP die Tabelle für Sie erstellt.
Dave K

7
Vielleicht hat er die Frage des OP nicht beantwortet, aber zum Glück war dies genau das, wonach ich gesucht habe.
Garyh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.