Pregunta

¿Es posible crear una tabla temporal (solo sesión) desde una instrucción Seleccionar sin usar una instrucción Crear tabla y especificar cada tipo de columna? Sé que las tablas derivadas son capaces de esto, pero esas son súper temporales (solo de declaración) y quiero reutilizar.

Ahorraría tiempo si no tuviera que escribir un comando Crear tabla y mantener la lista de columnas y la lista de tipos emparejados.

¿Fue útil?

Solución

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

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

Puede usar la palabra clave temporal al crear una tabla. Una tabla temporal es visible solo a la sesión actual, y es dejado caer automáticamente Cuando la sesión está cerrada. Esto significa que dos sesiones diferentes pueden usar el mismo nombre temporal de la tabla sin conflicto entre sí o con una tabla no temporal existente del mismo nombre. (La tabla existente está oculta hasta que se deja caer la tabla temporal). Para crear tablas temporales, debe tener el privilegio de creación de tablas temporales.

Otros consejos

Además de Psparrow's Respuesta si necesita Agregar un índice A su tabla temporal haz:

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

Use esta sintaxis:

CREATE TEMPORARY TABLE t1 (select * from t2);

El motor debe ser antes de seleccionar:

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

ENGINE=MEMORY no es compatible cuando la tabla contiene BLOB/TEXT columnas

CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top