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