Domanda

È possibile creare una tabella temporanea (solo sessione) da un'istruzione SELECT senza utilizzare un'istruzione Crea tabella e specificare ogni tipo di colonna? So che le tabelle derivate sono in grado di questo, ma quelle sono super-temporanee (solo dichiarazioni) e voglio riutilizzare.

Sarebbe risparmiato tempo se non avessi dovuto scrivere un comando Crea tabella e mantenere l'elenco delle colonne e il tipo di elenco abbinato.

È stato utile?

Soluzione

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

Dal manuale trovato a http://dev.mysql.com/doc/refman/5.7/en/create-table.html

È possibile utilizzare la parola chiave temporanea durante la creazione di una tabella. Una tabella temporanea è visibile solo alla sessione corrente, ed è caduto automaticamente Quando la sessione è chiusa. Ciò significa che due sessioni diverse possono utilizzare lo stesso nome della tabella temporanea senza contrastare l'uno con l'altro o con una tabella non temporanea esistente con lo stesso nome. (La tabella esistente è nascosta fino a quando la tabella temporanea non viene eliminata.) Per creare tabelle temporanee, è necessario disporre del privilegio di creare tabelle temporanee.

Altri suggerimenti

Inoltre pSparrow's Rispondi se hai bisogno di farlo Aggiungi un indice alla tua tavola temporanea fai:

CREATE TEMPORARY TABLE IF NOT EXISTS 
  temp_table ( INDEX(col_2) ) 
ENGINE=MyISAM 
AS (
  SELECT col_1, coll_2, coll_3
  FROM mytable
)

Funziona anche con PRIMARY KEY

Usa questa sintassi:

CREATE TEMPORARY TABLE t1 (select * from t2);

Il motore deve essere prima di selezionare:

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

ENGINE=MEMORY non è supportato quando la tabella contiene BLOB/TEXT colonne

CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top