Créer une table temporaire dans une déclaration SELECT sans créer une TABLE séparée

est-il possible de créer une table temporaire (session seulement) à partir d'une instruction select sans utiliser une instruction create table et en spécifiant chaque type de colonne? Je sais que les tableaux dérivés sont capables de cela, mais ceux-ci sont super-temporaire (déclaration-seulement) et je veux réutiliser.

ce serait gagner du temps si je n'avais pas à écrire une commande Créer une table et garder la liste de colonne et la liste de type appariés.

434
demandé sur einpoklum 2011-05-02 20:03:02

5 réponses

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

du manuel trouvé à http://dev.mysql.com/doc/refman/5.7/en/create-table.html

vous pouvez utiliser le mot-clé temporaire lors de la création d'une table. Un tableau temporaire est visible uniquement pour la session en cours , et est automatiquement abandonné lorsque la session est fermée. Cela signifie que deux sessions différentes peuvent utiliser le même nom de table temporaire sans en conflit les uns avec les autres ou avec une table non temporaire existante du même nom. (La table existante est cachée jusqu'à ce que la table temporaire soit abandonnée.) Pour créer des tables temporaires, vous devez avoir le privilège créer des TABLES temporaires.

709
répondu psparrow 2016-02-04 10:30:37

en plus de psparrow's réponse si vous avez besoin de ajouter un index à votre table temporaire faire:

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

il fonctionne aussi avec PRIMARY KEY

121
répondu RafaSashi 2013-07-13 11:09:56

utilisez cette syntaxe:

CREATE TEMPORARY TABLE t1 (select * from t2);
56
répondu rizon 2015-04-21 07:10:53

moteur doit être avant select:

CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY 
as (select * from table1)
53
répondu Crusader 2013-02-14 14:02:25

ENGINE=MEMORY n'est pas pris en charge lors de la table contient BLOB / TEXT colonnes

33
répondu Cris 2015-04-21 07:11:55