selezionare in in mysql


88

Sono un utente MSSQL e ora sto convertendo il mio database in MySQL. Sto scrivendo la seguente query in MySQL:

select * into new_tbl from tbl

E ottengo il seguente errore

Error : Undeclared variable new_tbl

Come dovrebbe essere scritta correttamente una query del genere in MySQL?

Risposte:


130

Usa la sintassi CREATE TABLE SELECT.

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

CREATE TABLE new_tbl SELECT * FROM orig_tbl;

Il comando SELECT INTO crea una nuova tabella e può essere copiato i dati da un database a un altro come
— Shankar Regmi

3
La sintassi corretta è: CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
— csname1910

CREATE ... SELECT funziona, questa dovrebbe essere la risposta accettata. La parola chiave "AS" è apparentemente facoltativa e SELECT INTO non funziona con MySQL.
— Leo

Sottolinea che non crea indici!
— Ivan Ivković

89

In MySQL, dovrebbe essere così

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

Documentazione MySQL


8
Sottile differenza. In questo caso la tabella deve esistere. Perché select intonon è così. In effetti, penso che sia un errore se lo fa. Quindi questa soluzione dovrebbe essere preceduta da istruzioni che duplicano lo schema della tabella.
— paxdiablo

Come dice paxdiablo, questo richiede che la tabella in cui stai inserendo esista già. La sintassi MSSQL utilizzata da OP per creare la tabella per te.
— Dave K

7
Forse non ho risposto alla domanda dell'OP, ma fortunatamente questo era esattamente quello che stavo cercando.
— garyh
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.