выберите в mysql

86

Я пользователь MSSQL и сейчас конвертирую свою базу данных в MySQL. Я пишу в MySQL следующий запрос:

select * into new_tbl from tbl

И я получаю следующую ошибку

Error : Undeclared variable new_tbl

Как правильно написать такой запрос в MySQL?

Мандип Сингх
источник

Ответы:

128

Используйте синтаксис CREATE TABLE SELECT.

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

CREATE TABLE new_tbl SELECT * FROM orig_tbl;
Дэйв К.
источник
Команда SELECT INTO создает новую таблицу и может быть скопирована данные из одной базы данных в другую как
Шанкар Регми
3
Правильный синтаксис: CREATE TABLE new_tbl AS SELECT * FROM orig_tbl;
csname1910
CREATE ... SELECT работает, это должен быть принятый ответ. Ключевое слово «AS», очевидно, необязательно, а SELECT INTO не работает с MySQL.
leo
Подчеркните, что он не создает индексы!
Иван Ивкович
89

В MySQL это должно быть так

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

Мухаммад Хани
источник
8
Тонкая разница. В этом случае таблица должна существовать. Ибо select intoэто не так. На самом деле, я думаю, что это ошибка. Таким образом, это решение должно начинаться с инструкций, дублирующих схему таблицы.
paxdiablo
Как говорит paxdiablo, для этого требуется, чтобы таблица, в которую вы вставляете, уже существовала. Синтаксис MSSQL, который используется OP, создает таблицу за вас.
Dave K
7
Возможно, я не ответил на вопрос ОП, но, к счастью, это было именно то, что я искал.
garyh