创build具有相同列和types的临时表作为永久表的最佳方法
我需要创build一个与永久表相同的列和types的临时表。 什么是最好的办法呢? (永久表有100多列)
即
通常我会这样创build表格。
DECLARE #TT TABLE( member_id INT, reason varchar(1), record_status varchar(1) , record_type varchar(1) )
但有没有办法做到这一点,而不提及列的名称和types,但提及所需列的另一个表的名称?
select top 0 * into #mytemptable from myrealtable
sorting一个…
select top 0 * into #temptable from mytable
注意:这会创build一个temp的空副本,但不会创build主键
这是一个MySQL特定的答案,不知道它在哪里工作 –
您可以创build一个具有相同列定义的空表:
CREATE TEMPORARY TABLE temp_foo LIKE foo;
你可以创build一个现有表的填充副本:
CREATE TEMPORARY TABLE temp_foo SELECT * FROM foo;
以下是postgres的作品。 不幸的是,不同的RDBMS在这里似乎并不一致:
CREATE TEMPORARY TABLE temp_foo AS SELECT * FROM foo;
我意识到这个问题是非常古老的,但是对于任何寻找特定于PostgreSQL的解决scheme的人来说,它是:
CREATE TEMP TABLE tmp_table AS SELECT * FROM original_table LIMIT 0;
请注意,临时表将被放入像pg_temp_3这样的模式中。
这将创build一个临时表,它将包含所有列(没有索引)和没有数据,但是根据您的需要,您可能需要删除主键:
ALTER TABLE pg_temp_3.tmp_table DROP COLUMN primary_key;
如果原始表格中没有任何数据,则可以忽略“LIMIT 0”。
select * into #temptable from tablename where 1<>1