Создание временной таблицы в инструкции 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 temp1 ENGINE=MEMORY
as (select * from table1)