2011-07-10 13 views
24

i quieren utilizar instrucción de selección sobre la mesa y la inserción resultado en una variable de tabla temporal, pero no declaran tabla temporal con columnas y quiero usar como esto:Cómo SELECCIONAR * EN [tabla tmp] sin declarar tabla?

Declare #tmp table; 

SELECT * INTO #tmp FROM myTable 

esto quiere declarar columnas y datos tipos de #tmp

favor me ayudan a

+0

Tenga en cuenta que seleccionar en no es una copia fiel de la tabla. Si tiene una columna de identidad, por ejemplo, esta propiedad se conserva, pero otras propiedades y objetos de tabla (índices, restricciones, activadores, etc.) no se copian. –

Respuesta

30

Usted puede hacer esto simplemente sin el comando DECLARE - que no es válida para las tablas #temp de todos modos, sólo las variables @table. ¿Usted intentó simplemente la siguiente sin tratar de definir primero #tmp:

SELECT * INTO #tmp FROM myTable; 
+0

gracias Aaron, pero de esta manera crear una tabla en las tablas del sistema –

+0

¿Así que es su pregunta cómo crear una tabla #temp sin crear una entrada en tempdb.sys.tables? ¿Por qué te importa? De todos modos, no puede crear una tabla #temp (o una variable @table) sin generar una fila en tempdb.sys.tables, lo siento. –

+0

ohhh, sí. gracias Aaron. decido soltar la tabla temporal de forma manual –

25

Con los datos:

select * 
into #tmp 
from myTable 

Sin datos:

select * 
into #tmp 
from myTable 
where 0=1 

Por cierto, puede no hacer esto con variables de tabla.

select * 
into @tmp 
from myTable 

variables de tabla deben ser declarada con las columnas.

+4

+1 para referencia de crear un vacío mesa. –

+0

@ Aaron - Y usted obtuvo uno de mí por ser el primero con la respuesta correcta :) –

+0

¿Aunque solo le gané unos 3 segundos? :-) –

Cuestiones relacionadas