wybierz w mysql

86

Jestem użytkownikiem MSSQL i teraz konwertuję moją bazę danych na MySQL. Piszę następującą kwerendę w MySQL:

select * into new_tbl from tbl

I otrzymuję następujący błąd

Error : Undeclared variable new_tbl

Jak takie zapytanie powinno być poprawnie napisane w MySQL?

Mandeep Singh
źródło

Odpowiedzi:

128

Użyj składni 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.
źródło
Polecenie SELECT INTO tworzy nową tabelę i może być kopiowane z jednej bazy danych do drugiej jako
Shankar Regmi
3
Prawidłowa składnia to: CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
csname1910
CREATE ... SELECT działa, to powinna być zaakceptowana odpowiedź. Słowo kluczowe „AS” jest najwyraźniej opcjonalne, a SELECT INTO nie działa z MySQL.
leo
Podkreśl, że nie tworzy indeksów!
Ivan Ivković
89

W MySQL powinno być tak

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

Dokumentacja MySQL

MuhammadHani
źródło
8
Subtelna różnica. W tym przypadku tabela musi istnieć. Bo select intotak nie jest. W rzeczywistości myślę, że to błąd, jeśli tak. Dlatego to rozwiązanie powinno być poprzedzone instrukcjami, które powielają schemat tabeli.
paxdiablo
Jak mówi paxdiablo, wymaga to, aby tabela, do której wstawiasz, już istniała. Składnia MSSQL, z której korzysta OP, tworzy tabelę za Ciebie.
Dave K
7
Może nie odpowiedziałem na pytanie PO, ale na szczęście właśnie tego szukałem.
garyh