Создание временной таблицы в инструкции SELECT без отдельной таблицы CREATE

можно ли создать временную (только сеанс) таблицу из инструкции select без использования инструкции create table и указания каждого типа столбца? Я знаю, что производные таблицы способны на это, но они супер-временные (только для операторов), и я хочу повторно использовать.

это сэкономило бы время, если бы мне не пришлось писать команду create table и поддерживать список столбцов и список типов.

5 ответов


CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)

из руководства, найденного в http://dev.mysql.com/doc/refman/5.7/en/create-table.html

вы можете использовать временное ключевое слово при создании таблицы. Временная таблица видимый только для текущей сессии и автоматически удаляются когда сессия закрыта. Это означает, что два разных сеанса могут использовать одно и то же временное имя таблицы, не конфликтуя друг с другом или с существующим нестационарным таблица с тем же именем. (Существующая таблица скрыта до тех пор, пока временная таблица удаляется.) Для создания временных таблиц необходимо иметь привилегию CREATE TEMPORARY TABLES.


кроме psparrow это ответ, Если вам нужно добавить индекс к вашей временной таблице сделайте:

CREATE TEMPORARY TABLE IF NOT EXISTS 
  temp_table ( INDEX(col_2) ) 
ENGINE=MyISAM 
AS (
  SELECT col_1, coll_2, coll_3
  FROM mytable
)

Он работает с PRIMARY KEY


использовать следующий синтаксис:

CREATE TEMPORARY TABLE t1 (select * from t2);

двигатель должен быть перед выбором:

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY 
as (select * from table1)

ENGINE=MEMORY не поддерживается, когда таблица содержит BLOB/TEXT колонки