Maak een tijdelijke tabel in een SELECT statement zonder een aparte CREATE TABLE

Is het mogelijk om een tijdelijke (alleen sessie) tabel te maken van een select statement zonder een create table statement te gebruiken en elk kolomtype te specificeren? Ik weet dat afgeleide tabellen dit kunnen, maar die zijn super-tijdelijk (statement-only) en ik wil ze hergebruiken.

Het zou tijd besparen als ik geen create table commando hoefde te schrijven en de kolom- en typelijst op elkaar moet laten aansluiten.

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

Uit de handleiding te vinden op http://dev.mysql.com/doc/refman/5.7/en/create-table.html

U kunt het TEMPORARY sleutelwoord gebruiken bij het maken van een tabel. Een TEMPORARY tabel is alleen zichtbaar voor de huidige sessie, en wordt automatisch verwijderd wanneer de sessie wordt afgesloten. Dit betekent dat twee verschillende sessies dezelfde tijdelijke tabelnaam kunnen gebruiken zonder in conflict te komen met elkaar of met een bestaande niet-TEMPORARY tabel met dezelfde naam. (De bestaande tabel wordt verborgen totdat de tijdelijke tabel wordt gedropt.) Om tijdelijke tabellen te maken, moet je de CREATE TEMPORARY TABLES privilege hebben.

Commentaren (12)

Gebruik deze syntaxis:

CREATE TEMPORARY TABLE t1 (select * from t2);
Commentaren (1)

De motor moet voor de selectie staan:

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