tabla - SQL Server ''select*into'' versus ''insert en..select*
select into temp table sql server (5)
Digamos que table1
y table2
ya existen, ¿hay alguna diferencia entre estas consultas?
consulta1: -
select * into table1 from table2 where 1=1
consulta2: -
insert into table1 select * from table2
El select * into table1 from table2 where 1=1
crea table1 e inserta los valores de table2 en ellos. Por lo tanto, si la tabla ya está creada, esa declaración daría un error.
La insert into table1 select * from table2
solo inserta los valores de table2 en table1.
El primero ( SELECT INTO
) creará y completará una nueva tabla, el segundo ( INSERT... SELECT
) se inserta en una tabla existente.
En las versiones de SQL Server anteriores a 2008, la primera podría registrarse mínimamente y la segunda no, pero esto ya no es cierto .
En query2, la tabla table1
debe existir antes de ejecutar el comando
En query1, se creará table1
o se generará un error si ya existe
INSERT INTO TABLE_A SELECT * FROM TABLE_B
Es una oración de uso común, que se utiliza para insertar valores de una tabla en otra tabla. Las columnas seleccionadas también se pueden insertar utilizando esto.
SELECT * INTO TABLE_A FROM TABLE_B
Creará una nueva TABLE_A rellenada con los valores de TABLE_B
select * into table1 from table2 where 1=1
La consulta anterior requiere que la tabla NO exista. No es necesario que especifique columnas, ya que todas las columnas se crean a medida que se recuperan de la tabla de origen.
insert into table1 select * from table2
Para la consulta anterior, necesita una tabla EXISTENTE1. Las columnas en ambas tablas también deben estar exactamente en el mismo orden, de lo contrario, debe proporcionar una lista de columnas para ambas tablas.