Bry*_*eld 479 mysql select temp-tables derived-table create-table
是否可以在不使用create table语句并指定每个列类型的情况下从select语句创建临时(仅会话)表?我知道派生表能够做到这一点,但那些是超临时的(仅限语句),我想重用.
如果我不必编写create table命令并保持列列表和类型列表匹配,那么可以节省时间.
psp*_*row 770
CREATE TEMPORARY TABLE IF NOT EXISTS table2 AS (SELECT * FROM table1)
Run Code Online (Sandbox Code Playgroud)
来自http://dev.mysql.com/doc/refman/5.7/en/create-table.html上的手册
您可以在创建表时使用TEMPORARY关键字.TEMPORARY表仅对当前会话可见,并在会话关闭时自动删除.这意味着两个不同的会话可以使用相同的临时表名,而不会相互冲突或与现有的同名非TEMPORARY表冲突.(在删除临时表之前,将隐藏现有表.)要创建临时表,您必须具有CREATE TEMPORARY TABLES特权.
Raf*_*shi 132
除了psparrow的答案,如果你需要为临时表添加一个索引,请执行以下操作:
CREATE TEMPORARY TABLE IF NOT EXISTS
temp_table ( INDEX(col_2) )
ENGINE=MyISAM
AS (
SELECT col_1, coll_2, coll_3
FROM mytable
)
Run Code Online (Sandbox Code Playgroud)
它也适用 PRIMARY KEY
riz*_*zon 63
使用以下语法:
CREATE TEMPORARY TABLE t1 (select * from t2);
Run Code Online (Sandbox Code Playgroud)
Cru*_*der 54
引擎必须在选择之前:
CREATE TEMPORARY TABLE temp1 ENGINE=MEMORY
as (select * from table1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
648011 次 |
| 最近记录: |