221

在创建了一个临时表并像这样声明数据类型之后;

CREATE TABLE #TempTable(
ID int,
Date datetime,
Name char(20))

然后如何插入已经保存在数据库中物理表上的相关数据?

4

14 回答 14

276
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table
于 2012-08-02T13:59:05.997 回答
129

要插入所有列中的所有数据,只需使用以下命令:

SELECT * INTO #TempTable
FROM OriginalTable

完成后和再次尝试创建它之前,不要忘记DROP临时表:

DROP TABLE #TempTable
于 2015-01-12T16:00:35.520 回答
77
SELECT  ID , Date , Name into #temp from [TableName]
于 2013-04-02T11:13:17.190 回答
47

Insert在 SQL Server 中的方式。此外,我通常检查是否存在临时表。

IF OBJECT_ID('tempdb..#MyTable') IS NOT NULL DROP Table #MyTable

SELECT b.Val as 'bVals'
  INTO #MyTable
FROM OtherTable as b
于 2014-05-05T02:30:59.293 回答
22
SELECT * 
INTO #TempTable
FROM table
于 2015-06-17T07:30:12.200 回答
21

我提供了两种方法来解决相同的问题,

解决方案1:这种方法包括2个步骤,首先创建一个具有指定数据类型的临时表,然后从现有数据表中插入值。

CREATE TABLE #TempStudent(tempID  int, tempName  varchar(MAX) )
INSERT INTO #TempStudent(tempID, tempName) SELECT id, studName FROM students where id =1

SELECT * FROM #TempStudent

解决方案2:这种方法很简单,您可以直接将值插入到临时表中,系统会自动负责创建与原始表具有相同数据类型的临时表。

SELECT id, studName  INTO #TempStudent FROM students where id =1

SELECT * FROM #TempStudent
于 2017-08-11T16:50:07.110 回答
9

创建临时表后,您只需执行正常操作INSERT INTO () SELECT FROM

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t
于 2012-08-02T13:58:16.197 回答
8

正确的查询:

drop table #tmp_table

select new_acc_no, count(new_acc_no) as count1
into #tmp_table
from table
where unit_id = '0007' 
group by unit_id, new_acc_no
having count(new_acc_no) > 1
于 2013-06-06T07:38:24.877 回答
6
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable

请注意,这被认为是不好的做法:

insert into #temptable 
select col1, col2, col3 from othertable

如果临时表的定义发生变化,代码可能会在运行时失败。

于 2012-08-02T14:03:40.367 回答
6

下面给出临时表的基本操作,根据您的要求修改和使用,

-- 创建一个临时表

CREATE TABLE #MyTempEmployeeTable(tempUserID  varchar(MAX), tempUserName  varchar(MAX) )

-- 将值插入临时表

INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21

-- 查询一个临时表 [这将只在同一个会话/实例中有效,而不是在其他用户会话实例中]

SELECT * FROM #MyTempEmployeeTable

-- 删除临时表中的值

DELETE FROM #MyTempEmployeeTable

-- 删除一个临时表

DROP TABLE #MyTempEmployeeTable
于 2017-08-11T14:58:44.270 回答
4
INSERT INTO #TempTable(ID, Date, Name)
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable
于 2012-08-02T13:58:30.607 回答
2
insert #temptable
select idfield, datefield, namefield from yourrealtable
于 2012-08-02T13:57:44.250 回答
1

上述所有答案几乎都可以达到目的。但是,您需要在对其进行所有操作后删除临时表。你可以关注——

INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table;

IF OBJECT_ID('tempdb.dbo.#TempTable') IS NOT NULL 
    DROP TABLE #TempTable;
于 2020-12-21T10:44:53.223 回答
0

上述所有答案几乎都可以达到目的。但是,您需要在对其进行所有操作后删除临时表。你可以关注——

INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table;

IF OBJECT_ID('tempdb.dbo.#TempTable') IS NOT NULL 
    DROP TABLE #TempTable;
于 2020-12-21T10:48:34.977 回答