виберіть у 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
Правильний синтаксис: СТВОРИТИ ТАБЛИЦЮ 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.