виберіть у 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.