Creare una tabella temporanea in un'istruzione selezionata senza una tabella di creazione separata
-
28-10-2019 - |
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.
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)