Create a temporary table in a SELECT statement without a separate CREATE TABLE Create a temporary table in a SELECT statement without a separate CREATE TABLE mysql mysql

Create a temporary table in a SELECT statement without a separate CREATE TABLE


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

From the manual found at http://dev.mysql.com/doc/refman/5.7/en/create-table.html

You can use the TEMPORARY keyword when creating a table. A TEMPORARY table is visible only to the current session, and is dropped automatically when the session is closed. This means that two different sessions can use the same temporary table name without conflicting with each other or with an existing non-TEMPORARY table of the same name. (The existing table is hidden until the temporary table is dropped.) To create temporary tables, you must have the CREATE TEMPORARY TABLES privilege.


In addition to psparrow's answer if you need to add an index to your temporary table do:

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

It also works with PRIMARY KEY


Use this syntax:

CREATE TEMPORARY TABLE t1 (select * from t2);