Insertar datos en una tabla temporal


195

Después de haber creado una tabla temporal y declarar los tipos de datos así;

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

¿Cómo inserto los datos relevantes que ya se encuentran en una tabla física dentro de la base de datos?

Respuestas:


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

55
Recuerde soltar la tabla una vez que haya terminado con ella, de lo contrario podría encontrarse con "Ya existe un objeto llamado '#TempTable' en la base de datos". error (debería ejecutar la consulta de nuevo ...)
Rhdr

La pregunta inicial era sobre la tabla, que ya estaba creada. Como la sugerencia es útil, no está relacionada con la pregunta del autor
alexsuslin

98

Para insertar todos los datos de todas las columnas, solo use esto:

SELECT * INTO #TempTable
FROM OriginalTable

No olvide DROPla tabla temporal una vez que haya terminado y antes de intentar crearla nuevamente:

DROP TABLE #TempTable

9
Me gusta esto porque no tengo a CREATEla#TempTable
MAbraham1


41

Mi forma de Inserthacerlo en SQL Server. Además, generalmente verifico si existe una tabla temporal.

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

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

21
SELECT * 
INTO #TempTable
FROM table

La respuesta más simple aquí realmente. También puede usar dbo.MyTable y será una tabla permanente. Easy peasy
Fandango68

15

He proporcionado dos enfoques para resolver el mismo problema,

Solución 1: este enfoque incluye 2 pasos, primero cree una tabla temporal con el tipo de datos especificado, luego inserte el valor de la tabla de datos existente.

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

SELECT * FROM #TempStudent

Solución 2: este enfoque es simple, donde puede insertar directamente los valores en la tabla temporal, donde automáticamente el sistema se encarga de crear la tabla temporal con el mismo tipo de datos de la tabla original.

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

SELECT * FROM #TempStudent

Si bien reconozco que esta es una tabla temporal, aún así nunca recomendaría que alguien use varchar (MAX).
bp_

8

La consulta correcta:

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

10
Esta respuesta no tiene nada que ver con la pregunta. Tomó esta información de otro lugar. Extracción new_acc_no, unit_id = '0007', group by, having count(new_acc_no) > 1, etc transforma la respuesta en un duplicado exacto de: stackoverflow.com/a/15762663/1476885
Zanon

7

Después de crear la tabla temporal, simplemente haría un normal INSERT INTO () SELECT FROM

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

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

Tenga en cuenta que esto se considera una mala práctica:

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

Si la definición de la tabla temporal cambiara, el código podría fallar en tiempo de ejecución.


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

3

El funcionamiento básico de la tabla temporal se proporciona a continuación, se modifica y se usa según sus requisitos,

- CREAR UNA TABLA DE TEMPERATURAS

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

- INSERTE EL VALOR EN UNA TABLA DE TEMPERATURAS

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

- CONSULTE UNA TABLA DE TEMP [Esto funcionará solo en la misma sesión / Instancia, no en otra instancia de sesión de usuario]

SELECT * FROM #MyTempEmployeeTable

- BORRAR VALOR EN TABLA TEMP

DELETE FROM #MyTempEmployeeTable

- BAJA UNA TABLA DE TEMPERATURAS

DROP TABLE #MyTempEmployeeTable

Si bien reconozco que esta es una tabla temporal, aún así nunca recomendaría que alguien use varchar (MAX).
bp_

@bp_ Este es un fragmento de muestra generalizado que explica que el usuario y el Usuario pueden especificar el tipo de datos y su tamaño en función de los requisitos de su aplicación.
BHUVANESH MOHANKUMAR

2
insert #temptable
select idfield, datefield, namefield from yourrealtable
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.