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.