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?

Mandeep Singh
quelle

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;
Dave K.
quelle
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

MuhammadHani
quelle
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