我需要创建一个具有与永久表相同的列和类型的临时表。最好的方法是什么?(永久表有超过100列)
即
通常我创建这样的表。
DECLARE #TT TABLE(
member_id INT,
reason varchar(1),
record_status varchar(1) ,
record_type varchar(1)
)
但是,有什么方法可以不提及列名和类型,而要提及具有所需列的另一个表的名称?
我需要创建一个具有与永久表相同的列和类型的临时表。最好的方法是什么?(永久表有超过100列)
即
通常我创建这样的表。
DECLARE #TT TABLE(
member_id INT,
reason varchar(1),
record_status varchar(1) ,
record_type varchar(1)
)
但是,有什么方法可以不提及列名和类型,而要提及具有所需列的另一个表的名称?
select into声明,这是更长远的保障和更少的耗时比handtyping的DDL
select into在他的问题中提及,而且大多数答案都是无关紧要的。
Answers:
select top 0 *
into #mytemptable
from myrealtable
myrealtable有任何计算列,它们将作为实列插入到临时表中,这通常是不希望的。
最好的一个...
select top 0 * into #temptable from mytable
注意:这将创建一个空的temp副本,但不会创建主键
select * into #temptable from tablename where 1<>1
将临时表结构克隆到SQL Server中的新物理表
我们将了解如何在SQL Server中将临时表结构克隆到新的物理表中。这适用于Azure SQL数据库和内部部署。
演示SQL脚本
IF OBJECT_ID('TempDB..#TempTable') IS NOT NULL
DROP TABLE #TempTable;
SELECT 1 AS ID,'Arul' AS Names
INTO
#TempTable;
SELECT * FROM #TempTable;
方法1
SELECT * INTO TempTable1 FROM #TempTable WHERE 1=0;
EXEC SP_HELP TempTable1;
方法2
SELECT TOP 0 * INTO TempTable1 FROM #TempTable;
EXEC SP_HELP TempTable1;