выберите в 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.