Create tableステートメントを使用せずに各列タイプを指定せずに、selectステートメントから一時(セッションのみ)テーブルを作成することは可能ですか?派生テーブルでこれが可能であることを私は知っていますが、それらは超一時的(ステートメントのみ)であり、再利用したいのです。
テーブル作成コマンドを作成し、列リストと型リストを一致させておく必要がなければ、時間を節約できます。
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
http://dev.mysql.com/doc/refman/5.7/en/create-table.htmlにあるマニュアルから
テーブルを作成するときにTEMPORARYキーワードを使用できます。 TEMPORARYテーブルは 現在のセッションからしか見えない で、セッションが閉じられると 自動的に削除されます です。これは、2つの異なるセッションが互いに、または同じ名前の既存の非TEMPORARYテーブルと競合することなく、同じ一時テーブル名を使用できることを意味します。 (一時表がドロップされるまで、既存の表は非表示になります。)一時表を作成するには、CREATE TEMPORARY TABLES特権が必要です。
psparrowの に加えて、 インデックスを追加する必要がある場合は あなたの一時テーブルに/を追加します。
CREATE TEMPORARY TABLE IF NOT EXISTS
temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
SELECT col_1, coll_2, coll_3
FROM mytable
)
PRIMARY KEY
でも動作します
この構文を使用してください。
CREATE TEMPORARY TABLE t1 (select * from t2);
エンジンを選択する前にする必要があります。
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
テーブルにBLOB
/TEXT
列が含まれる場合、ENGINE=MEMORY
はサポートされません