将数据插入临时表

Wil*_*iam 174 sql sql-server temp-tables

创建临时表并声明数据类型之后;

 CREATE TABLE #TempTable(
 ID int,
 Date datetime,
 Name char(20))
Run Code Online (Sandbox Code Playgroud)

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

ale*_*lin 229

INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table
Run Code Online (Sandbox Code Playgroud)

  • 请记住在完成后删除该表,否则您可能会遇到“数据库中已经有一个名为‘#TempTable’的对象”。错误(您是否应该再次运行查询...) (11认同)
  • @alexsuslin 它是连接的,不要那样 (3认同)

She*_*dan 85

要插入所有列的所有数据,只需使用:

SELECT * INTO #TempTable
FROM OriginalTable
Run Code Online (Sandbox Code Playgroud)

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

DROP TABLE #TempTable
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个,因为我不必``创建``#TritTable` (8认同)

Abd*_*oor 73

SELECT  ID , Date , Name into #temp from [TableName]
Run Code Online (Sandbox Code Playgroud)


max*_*xim 39

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
Run Code Online (Sandbox Code Playgroud)

  • 另外:`如果存在则删除表#MyTable` (2认同)

小智 16

SELECT * 
INTO #TempTable
FROM table
Run Code Online (Sandbox Code Playgroud)


Ips*_*thi 9

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

解决方案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
Run Code Online (Sandbox Code Playgroud)

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

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

SELECT * FROM #TempStudent
Run Code Online (Sandbox Code Playgroud)


小智 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
Run Code Online (Sandbox Code Playgroud)

  • 这个答案与这个问题无关.您从其他地方获取此信息.删除`new_acc_no`,`unit_id ='0007'`,`group by`,`count count(new_acc_no)> 1`等等,将答案转换为:http://stackoverflow.com/a/15762663/ 1476885 (10认同)

Tar*_*ryn 7

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

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t
Run Code Online (Sandbox Code Playgroud)


BHU*_*MAR 6

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

-- 创建一个临时表

CREATE TABLE #MyTempEmployeeTable(tempUserID  varchar(MAX), tempUserName  varchar(MAX) )
Run Code Online (Sandbox Code Playgroud)

-- 将值插入临时表

INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21
Run Code Online (Sandbox Code Playgroud)

-- 查询临时表 [这只适用于同一个会话/实例,而不适用于其他用户会话实例]

SELECT * FROM #MyTempEmployeeTable
Run Code Online (Sandbox Code Playgroud)

-- 删除临时表中的值

DELETE FROM #MyTempEmployeeTable
Run Code Online (Sandbox Code Playgroud)

-- 删除一个临时表

DROP TABLE #MyTempEmployeeTable
Run Code Online (Sandbox Code Playgroud)


Rob*_*Dee 5

insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable
Run Code Online (Sandbox Code Playgroud)

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

insert into #temptable 
select col1, col2, col3 from othertable
Run Code Online (Sandbox Code Playgroud)

如果要更改临时表的定义,则代码可能会在运行时失败.