Вставка данных во временную таблицу

после создания временной таблицы и объявления таких типов данных;

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

Как вставить соответствующие данные, которые уже хранятся в физической таблице в базе данных?

12 ответов


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

SELECT  ID , Date , Name into #temp from [TableName]

вставить все данные из всех столбцов, просто использовать это:

SELECT * INTO #TempTable
FROM OriginalTable

не забудьте DROP временная таблица после того, как вы закончите с ней и до вы пытаетесь создать его снова:

DROP TABLE #TempTable

мой способ 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

SELECT * 
INTO #TempTable
FROM table

правильный запрос:

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

после создания временной таблицы вы просто сделаете нормальный INSERT INTO () SELECT FROM

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t

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

обратите внимание, что это считается плохой практикой:

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

Если определение временной таблицы должно было измениться, код может завершиться ошибкой во время выполнения.


INSERT INTO #TempTable(ID, Date, Name)
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable

Я предоставил два подхода для решения одной и той же проблемы,

Решение 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 #temptable
select idfield, datefield, namefield from yourrealtable

основная деятельность временной таблицы приведена ниже, доработайте и используйте согласно вашим требованиям,

-- СОЗДАЙТЕ ВРЕМЕННУЮ ТАБЛИЦУ

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

-- УДАЛИТЬ ЗНАЧЕНИЕ В ТАБЛИЦЕ TEMP

DELETE FROM #MyTempEmployeeTable

-- ОТБРОСЬТЕ ВРЕМЕННУЮ ТАБЛИЦУ

DROP TABLE #MyTempEmployeeTable