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.

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top