【发布时间】:2012-07-31 12:17:43
【问题描述】:
在创建了一个临时表并像这样声明数据类型之后;
CREATE TABLE #TempTable(
ID int,
Date datetime,
Name char(20))
然后如何插入已经保存在数据库中物理表上的相关数据?
【问题讨论】:
标签: sql sql-server temp-tables
在创建了一个临时表并像这样声明数据类型之后;
CREATE TABLE #TempTable(
ID int,
Date datetime,
Name char(20))
然后如何插入已经保存在数据库中物理表上的相关数据?
【问题讨论】:
标签: sql sql-server temp-tables
insert #temptable
select idfield, datefield, namefield from yourrealtable
【讨论】:
创建临时表后,您只需执行普通的INSERT INTO () SELECT FROM
INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t
【讨论】:
INSERT INTO #TempTable(ID, Date, Name)
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable
【讨论】:
INSERT INTO #TempTable (ID, Date, Name)
SELECT id, date, name
FROM physical_table
【讨论】:
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable
请注意,这被认为是不好的做法:
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
【讨论】:
new_acc_no、unit_id = '0007'、group by、having count(new_acc_no) > 1 等会将答案转换为完全相同的副本:stackoverflow.com/a/15762663/1476885
我在 SQL Server 中使用Insert 的方式。我也经常检查临时表是否存在。
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,并且在您尝试再次创建它之前:
DROP TABLE #TempTable
【讨论】:
CREATE#TempTable
SELECT *
INTO #TempTable
FROM table
【讨论】:
Temporary table的基本操作如下,根据你的需求修改和使用,
-- 创建一个临时表
CREATE TABLE #MyTempEmployeeTable(tempUserID varchar(MAX), tempUserName varchar(MAX) )
-- 将值插入临时表
INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21
-- QUERY A TEMP TABLE [这仅适用于同一会话/实例,不适用于其他用户会话实例]
SELECT * FROM #MyTempEmployeeTable
-- 删除临时表中的值
DELETE FROM #MyTempEmployeeTable
-- 删除一个临时表
DROP TABLE #MyTempEmployeeTable
【讨论】:
我提供了两种方法来解决同样的问题,
解决方案 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
【讨论】:
上面提到的所有答案几乎都可以达到目的。但是,您需要在对其进行所有操作后删除临时表。你可以关注-
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;
【讨论】:
上面提到的所有答案几乎都可以达到目的。但是,您需要在对其进行所有操作后删除临时表。你可以关注-
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;
【讨论】: