Создайте временную таблицу в операторе SELECT без отдельной таблицы создания
-
28-10-2019 - |
Вопрос
Можно ли создать временную таблицу (только сеанс) из оператора SELECT без использования оператора Create Table и указания каждого типа столбца? Я знаю, что производные таблицы способны на это, но они супер-временные (только заявления), и я хочу повторно использовать.
Это сэкономило бы время, если бы мне не пришлось написать команду Create Table и сохранить список столбцов и тип списка.
Решение
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
Из руководства, найденного в http://dev.mysql.com/doc/refman/5.7/en/create-table.html
Вы можете использовать временное ключевое слово при создании таблицы. Временная таблица видимо только текущего сеанса, и является упал автоматически Когда сеанс закрыт. Это означает, что две разные сеансы могут использовать одно и то же временное имя таблицы без противоречия друг с другом или с существующей невременной таблицей с тем же именем. (Существующая таблица скрыта до тех пор, пока временная таблица не будет отброшена.) Чтобы создать временные таблицы, у вас должна быть привилегия создания временных таблиц.
Другие советы
В дополнение к Psparrow's Ответ, если вам нужно Добавьте индекс во временном столе:
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
колонны
CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)