我需要创建一个具有相同列和类型的临时表作为永久表.最好的方法是什么?(永久表有超过100列)
即
通常我会像这样创建表格.
DECLARE #TT TABLE(
member_id INT,
reason varchar(1),
record_status varchar(1) ,
record_type varchar(1)
)
Run Code Online (Sandbox Code Playgroud)
但有没有办法在不提及列名和类型的情况下执行此操作,但是提及具有所需列的另一个表的名称?
nat*_*lez 114
select top 0 *
into #mytemptable
from myrealtable
Run Code Online (Sandbox Code Playgroud)
Bro*_*oks 10
我意识到这个问题非常古老,但对于任何寻找特定于PostgreSQL的解决方案的人来说,它是:
CREATE TEMP TABLE tmp_table AS SELECT * FROM original_table LIMIT 0;
Run Code Online (Sandbox Code Playgroud)
注意,临时表将被放入类似pg_temp_3的模式中.
这将创建一个临时表,其中包含所有列(没有索引)且没有数据,但是根据您的需要,您可能希望删除主键:
ALTER TABLE pg_temp_3.tmp_table DROP COLUMN primary_key;
Run Code Online (Sandbox Code Playgroud)
如果原始表中没有任何数据,则可以不使用"LIMIT 0".
排序一...
select top 0 * into #temptable from mytable
Run Code Online (Sandbox Code Playgroud)
注意:这会创建一个空的temp副本,但它不会创建主键
这是一个特定于MySQL的答案,不知道它在哪里工作 -
您可以使用以下内容创建具有相同列定义的空表:
CREATE TEMPORARY TABLE temp_foo LIKE foo;
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令创建现有表的填充副本:
CREATE TEMPORARY TABLE temp_foo SELECT * FROM foo;
Run Code Online (Sandbox Code Playgroud)
以下是postgres的作品; 不幸的是,不同的RDBMS在这里似乎不太一致:
CREATE TEMPORARY TABLE temp_foo AS SELECT * FROM foo;
Run Code Online (Sandbox Code Playgroud)