Question

Est-il possible de créer une table temporaire (session uniquement) à partir d'une instruction select sans utiliser une instruction create table et spécifiant chaque type de colonne? Je sais que les tables dérivées sont capables de cela, mais ce sont des super-temporaires (déclaration seulement) et je veux réutiliser.

Il gagner du temps si je ne devais pas écrire une commande create table et garder la liste des colonnes et la liste de type jumelés.

Était-ce utile?

La solution

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

Dans le manuel http: //dev.mysql .com / doc / refman / 5.7 / fr / create-table.html

Vous pouvez utiliser le mot-clé TEMPORAIRE lors de la création d'une table. Une table temporaire est visible uniquement à la présente session et automatiquement supprimé lorsque la session est fermée. Cela signifie que deux sessions différentes peuvent utiliser le même nom de table temporaire sans entrer 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 tombe.) Pour créer des tables temporaires, vous devez avoir le privilège de création de tables temporaires.

Autres conseils

En plus de de psparrow réponse si vous avez besoin 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 également avec PRIMARY KEY

Utilisez cette syntaxe:

CREATE TEMPORARY TABLE t1 (select * from t2);

Le moteur doit être avant de sélectionner:

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

ENGINE=MEMORY est pas prise en charge lorsque la table contient des colonnes BLOB / TEXT

CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top