mysql - tablas - Cree una tabla temporal en una instrucción SELECT sin un CREATE TABLE separado
donde se almacenan las tablas temporales sql server (5)
¿Es posible crear una tabla temporal (solo sesión) a partir de una declaración de selección sin usar una declaración de creación de tabla y especificar cada tipo de columna? Sé que las tablas derivadas son capaces de esto, pero son súper temporales (solo para sentencias) y quiero volver a usarlas.
Se ahorraría tiempo si no tuviera que escribir un comando de creación de tabla y mantener la lista de columnas y la lista de tipos coincidentes.
Además de la respuesta de psparrow, si necesita agregar un índice a su tabla temporal, haga lo siguiente:
CREATE TEMPORARY TABLE IF NOT EXISTS
temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
SELECT col_1, coll_2, coll_3
FROM mytable
)
También funciona con PRIMARY KEY
El motor debe estar antes de seleccionar:
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
Utilice esta sintaxis:
CREATE TEMPORARY TABLE t1 (select * from t2);
ENGINE=MEMORY
no es compatible cuando la tabla contiene columnas BLOB
/ TEXT
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
Del manual que se encuentra en http://dev.mysql.com/doc/refman/5.7/en/create-table.html
Puede utilizar la palabra clave TEMPORAL al crear una tabla. Una tabla TEMPORAL solo es visible para la sesión actual y se elimina automáticamente cuando se cierra la sesión. Esto significa que dos sesiones diferentes pueden usar el mismo nombre de tabla temporal sin entrar en conflicto entre sí o con una tabla no TEMPORAL existente del mismo nombre. (La tabla existente se oculta hasta que se descarta la tabla temporal). Para crear tablas temporales, debe tener el privilegio CREAR TABLAS TEMPORALES.