Membuat tabel sementara dalam sebuah pernyataan SELECT tanpa terpisah MEMBUAT TABEL

Apakah mungkin untuk membuat temporary (sesi) tabel dari pernyataan select tanpa menggunakan pernyataan membuat tabel dan menentukan masing-masing tipe kolom? Aku tahu berasal meja yang mampu ini, tetapi mereka adalah super-sementara (pernyataan-only) dan saya ingin digunakan kembali.

Ini akan menghemat waktu jika saya tidak harus menulis membuat tabel perintah dan menjaga daftar kolom dan jenis daftar cocok.

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

Dari manual ditemukan di http://dev.mysql.com/doc/refman/5.7/en/create-table.html

Anda dapat menggunakan SEMENTARA kata kunci ketika membuat sebuah tabel. SEMENTARA meja terlihat hanya untuk sesi saat ini, dan turun secara otomatis ketika sesi ditutup. Ini berarti bahwa dua sesi yang berbeda dapat menggunakan tabel sementara nama tanpa bertentangan dengan satu sama lain atau dengan non-TEMPORARY tabel dengan nama yang sama. (Tabel yang ada tersembunyi sampai tabel sementara dijatuhkan.) Untuk membuat tabel sementara, anda harus MEMBUAT TABEL SEMENTARA hak istimewa.

Komentar (12)

Selain psparrow's jawaban jika anda perlu tambahkan indeks untuk sementara anda di meja anda lakukan:

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

Ia juga bekerja dengan KUNCI UTAMA

Komentar (3)

Menggunakan sintaks ini:

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

Mesin harus sebelum memilih:

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

ENGINE= MEMORI tidak didukung ketika tabel berisi GUMPALAN/TEKS kolom

Komentar (0)
CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
Komentar (0)