是否可以在不使用create table语句并指定每个列类型的情况下从select语句创建临时(仅会话)表? 我知道派生表能够做到这一点,但那些是超临时的(仅限语句),我想重用。
如果我不必编写create table命令并保持列列表和类型列表匹配,那么可以节省时间。
#1楼
使用以下语法:
CREATE TEMPORARY TABLE t1 (select * from t2);
#2楼
引擎必须在选择之前:
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
#3楼
当表包含BLOB
/ TEXT
列时,不支持ENGINE=MEMORY
#4楼
除了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
#5楼
CREATE TEMPORARY TABLE IF NOT EXISTS to_table_name AS (SELECT * FROM from_table_name)
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3160478