Sql 将数据插入临时表

Sql 将数据插入临时表,sql,sql-server,temp-tables,Sql,Sql Server,Temp Tables,在创建了一个临时表并像这样声明了数据类型之后 CREATE TABLE #TempTable( ID int, Date datetime, Name char(20)) 然后,如何插入数据库中物理表中已保存的相关数据?创建临时表后,只需正常插入SELECT FROM即可 insert #temptable select idfield, datefield, namefield from yourrealtable 请注意,这被视为不良做法: insert into #temptable

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

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

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

创建临时表后,只需正常插入SELECT FROM即可

insert #temptable
select idfield, datefield, namefield from yourrealtable
请注意,这被视为不良做法:

insert into #temptable 
select col1, col2, col3 from othertable
如果临时表的定义要更改,代码可能会在运行时失败。

正确的查询:

SELECT  ID , Date , Name into #temp from [TableName]
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
我在SQL Server中插入的方式。此外,我通常会检查是否存在临时表

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

SELECT b.Val as 'bVals'
  INTO #MyTable
FROM OtherTable as b

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

SELECT * INTO #TempTable
FROM OriginalTable
在完成临时表之后和再次尝试创建临时表之前,不要忘记删除临时表:

DROP TABLE #TempTable

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

-创建临时表

-将值插入临时表

-查询临时表[这仅在同一会话/实例中有效,在其他用户会话实例中无效]

-删除临时表中的值

-放下临时桌子


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

解决方案1:此方法包括两个步骤,首先使用 指定的数据类型,然后插入现有数据中的值 桌子

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


以上提到的所有答案几乎都能达到目的。但是,在对临时表执行所有操作之后,需要删除临时表。你可以跟着-

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;
插入可诱惑的ID、日期、名称 选择id、日期、名称 从物理表

如果对象_ID'tempdb.dbo.tentable'不为NULL
落桌诱惑

上述所有答案几乎都能满足目的。但是,在对临时表执行所有操作之后,需要删除临时表。你可以跟着-

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;

我喜欢这个,因为我不必创造出诱人的答案。这个答案与问题无关。你是从别的地方得到这个信息的。删除新的acc\u no,unit\u id='0007',groupby,countnew\u acc\u no>1,等等会将答案转换为:最简单的答案。您还可以使用dbo.MyTable,它将是一个永久表。Easy Peasy虽然我认识到这是一个临时表,但我仍然不建议有人使用varcharMAX。@bp_u这是一个通用的示例片段,解释了用户和用户可以根据其应用程序要求指定数据类型及其大小。虽然我认识到这是一个临时表,我仍然不建议有人使用varcharMAX。记住在处理完表后立即删除它,否则您可能会遇到数据库中已经有一个名为“tentable”的对象。再次运行查询时出错…最初的问题是关于已创建的表。由于提示很有用,因此它与作者的question@alexsuslin它是相连的,不要这样
SELECT * INTO #TempTable
FROM OriginalTable
DROP TABLE #TempTable
SELECT * 
INTO #TempTable
FROM table
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
CREATE TABLE #TempStudent(tempID  int, tempName  varchar(MAX) )
INSERT INTO #TempStudent(tempID, tempName) SELECT id, studName FROM students where id =1

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

SELECT * FROM #TempStudent
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;