Estoy tratando de seleccionar algunos campos de una tabla e insertarlos en una tabla existente desde un procedimiento almacenado. Esto es lo que estoy intentando:
SELECT col1, col2
INTO dbo.TableTwo
FROM dbo.TableOne
WHERE col3 LIKE @search_key
Creo que SELECT ... INTO ...
es para tablas temporales, por eso me sale un error que dbo.TableTwo
ya existe.
¿Cómo puedo insertar varias filas de dbo.TableOne
dentro dbo.TableTwo
?
sql
sql-server
tsql
stored-procedures
Daniel
fuente
fuente
Respuestas:
SELECT ... INTO ...
solo funciona si la tabla especificada en la cláusula INTO no existe; de lo contrario, debe usar:Esto supone que solo hay dos columnas en dbo.TABLETWO: de lo contrario, debe especificar las columnas:
fuente
SELECT... INTO...
declaración no parece funcionar si la tabla especificada en laINTO
cláusula aún no existe. Recibo un error de "variable no declarada". Aunque tal vez este problema sea solo para MySQL. ElCREATE TABLE ... LIKE .. worked
;Hay dos formas diferentes de implementar la inserción de datos de una tabla a otra.
Para la tabla existente: INSERTAR EN SELECCIONAR
Este método se utiliza cuando la tabla ya se creó en la base de datos anteriormente y los datos se deben insertar en esta tabla desde otra tabla. Si las columnas enumeradas en la cláusula de inserción y la cláusula de selección son las mismas, no es necesario que las enumeren. Es una buena práctica enumerarlos siempre con fines de legibilidad y escalabilidad.
Para tabla no existente - SELECCIONAR EN
Este método se utiliza cuando la tabla no se creó anteriormente y debe crearse cuando los datos de una tabla se insertarán en la tabla recién creada desde otra tabla. La nueva tabla se crea con los mismos tipos de datos que las columnas seleccionadas.
Ref. 1 2
fuente
Funcionaría como se indica a continuación:
fuente
SELECT *
no funcionará. Esta es una mejor manera, gracias!Si ya ha utilizado
select * into tablename from other tablenames
, la próxima vez, para agregar, digaselect * into existing table tablename from other tablenames
fuente
Si la tabla de destino existe pero no desea especificar nombres de columna:
fuente