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?

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;

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.