Erstellen Sie eine temporäre Tabelle in einer Auswahlanweisung ohne separate Erstellungstabelle
-
28-10-2019 - |
Frage
Ist es möglich, eine temporäre (nur Sitzung) Tabelle aus einer SELECT -Anweisung zu erstellen, ohne eine Erstellungstabelleanweisung zu verwenden und jeden Spaltentyp anzugeben? Ich weiß, dass abgeleitete Tabellen dazu in der Lage sind, aber diese sind super-zeitlich (nur Aussagen) und ich möchte wiederverwenden.
Es würde Zeit sparen, wenn ich keinen Befehl create table aufschreiben und die spalte liste behalten und eingeben müssten.
Lösung
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
Aus dem Handbuch bei http://dev.mysql.com/doc/refman/5.7/en/create-table.html
Sie können das temporäre Schlüsselwort beim Erstellen einer Tabelle verwenden. Ein temporärer Tisch ist nur in der aktuellen Sitzung sichtbar, und ist automatisch fallen gelassen Wenn die Sitzung geschlossen ist. Dies bedeutet, dass zwei verschiedene Sitzungen den gleichen temporären Tabellennamen verwenden können, ohne miteinander oder mit einer vorhandenen nicht-zeitgenössischen Tabelle gleicher zu widerstehen. (Die vorhandene Tabelle ist versteckt, bis die temporäre Tabelle fallen gelassen wird.) Um temporäre Tabellen zu erstellen, müssen Sie über die Berechtigung für temporäre Tabellen erstellen.
Andere Tipps
Zusätzlich zu Psparrows Antwort, wenn Sie müssen Fügen Sie einen Index hinzu zu Ihrem temporären Tisch tun:
CREATE TEMPORARY TABLE IF NOT EXISTS
temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
SELECT col_1, coll_2, coll_3
FROM mytable
)
Es funktioniert auch mit PRIMARY KEY
Verwenden Sie diese Syntax:
CREATE TEMPORARY TABLE t1 (select * from t2);
Der Motor muss vor dem Auswählen sein:
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
ENGINE=MEMORY
wird nicht unterstützt, wenn die Tabelle enthält BLOB
/TEXT
Säulen
CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)