Criar uma tabela temporária em uma instrução SELECT sem uma tabela CREATE TABLE separada

É possível criar uma tabela temporária (apenas sessão) a partir de uma expressão de seleção sem usar uma expressão de tabela de criação e especificar cada tipo de coluna? Sei que as tabelas derivadas são capazes disso, mas são super temporárias (apenas para declarações) e quero reutilizá-las.

Economizaria tempo se eu não tivesse que escrever um comando de criar tabela e manter a lista de colunas e a lista de tipos correspondentes.

Solução
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)

Do manual encontrado em http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Você pode usar a palavra-chave TEMPORÁRIA ao criar uma tabela. Uma tabela TEMPORÁRIA é visível apenas para a sessão actual, e é desligada automaticamente quando a sessão é encerrada. Isto significa que duas sessões diferentes podem usar o mesmo nome de tabela temporária sem entrar em conflito uma com a outra ou com uma tabela não-TEMPORÁRIA existente com o mesmo nome. (A tabela existente fica oculta até que a tabela temporária seja abandonada). Para criar tabelas temporárias, você deve ter o privilégio de CRIAR TABELAS TEMPORÁRIAS.

Comentários (12)

Use esta sintaxe:

CREATE TEMPORARY TABLE t1 (select * from t2);
Comentários (1)

O motor deve estar antes de selecionar:

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY 
as (select * from table1)
Comentários (0)