在SELECT语句中创建临时表,而不使用单独的CREATE TABLE

跟風遠走 提交于 2020-02-26 05:20:14

是否可以在不使用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)
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!