it-swarm-pt.tech

SQL Server 'select * into' versus 'insert into ..selecione *

Digamos que table1 e table2 já existam, existe alguma diferença entre essas consultas

query1: -

select * into table1 from table2 where 1=1

query2: -

insert into table1 select * from table2
25
Sujit Prabhakaran

O select * into table1 from table2 where 1=1 cria table1 e insere os valores de table2 neles. Portanto, se a tabela já foi criada, essa instrução geraria um erro.

O insert into table1 select * from table2 insere somente os valores da tabela2 na tabela1.

42
aF.

O primeiro ( SELECT INTO ) criará e preencherá uma nova tabela as segundas ( INSERT... SELECT ) inserções em uma tabela existente.

Nas versões do SQL Server anteriores a 2008, a primeira poderia ser minimamente registrada e a segunda não, mas isso não é mais verdadeiro .

8
Martin Smith
select * into table1 from table2 where 1=1

A consulta acima requer que a tabela NÃO exista. Você não precisa especificar colunas, pois todas as colunas são criadas à medida que são recuperadas da tabela de origem.

insert into table1 select * from table2 

Para a consulta acima, você precisa de uma tabela EXISTING1. As colunas nas duas tabelas também devem estar exatamente na mesma ordem, caso contrário, é necessário fornecer uma lista de colunas para ambas as tabelas.

5
Charl

Na consulta2, a tabela table1 deve existir antes de executar o comando 

Em query1, table1 será criado ou um erro será lançado se já existir

3
gbn
INSERT INTO TABLE_A SELECT * FROM TABLE_B

É uma frase comumente usada, que é usada para inserir valores de uma tabela em outra tabela. Colunas selecionadas também podem ser inseridas usando isso.

SELECT * INTO TABLE_A FROM TABLE_B

Irá criar um novo TABLE_A preenchido com valores de TABLE_B

1
ssingh