質問

作成テーブルステートメントを使用して各列タイプを指定せずに、選択ステートメントから一時的な(セッションのみ)テーブルを作成することは可能ですか?派生テーブルはこれで能力があることを知っていますが、それらは非常に一般的(ステートメントのみ)であり、私は再利用したいと思っています。

Create Tableコマンドを書き留めて列リストとタイプリストを一致させたままにする必要がない場合、時間を節約できます。

役に立ちましたか?

解決

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

で見つかったマニュアルから http://dev.mysql.com/doc/refman/5.7/en/create-table.html

テーブルを作成するときに一時キーワードを使用できます。一時的なテーブルはです 現在のセッションにのみ表示されます, 、 そして 自動的にドロップしました セッションが閉じられているとき。これは、2つの異なるセッションが、互いに矛盾することなく、または同じ名前の既存の非同時テーブルと同じ一時テーブル名を使用できることを意味します。 (既存のテーブルは、一時テーブルがドロップされるまで隠されています。)一時テーブルを作成するには、CREATEの一時テーブル特権を持つ必要があります。

他のヒント

に加えて psparrow's 必要に応じて答えてください インデックスを追加します 一時的なテーブルに:

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)

ENGINE=MEMORY テーブルが含まれている場合、サポートされていません BLOB/TEXT

CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top