Estou tentando selecionar alguns campos de uma tabela e inseri-los em uma tabela existente de um procedimento armazenado. Aqui está o que estou tentando:
SELECT col1, col2
INTO dbo.TableTwo
FROM dbo.TableOne
WHERE col3 LIKE @search_key
Eu acho que SELECT ... INTO ...
é para tabelas temporárias e é por isso que recebo um erro que dbo.TableTwo
já existe.
Como posso inserir várias linhas de dbo.TableOne
em dbo.TableTwo
?
sql
sql-server
tsql
stored-procedures
Daniel
fonte
fonte
Respostas:
SELECT ... INTO ...
só funciona se a tabela especificada na cláusula INTO não existir - caso contrário, você deverá usar:Isso pressupõe que há apenas duas colunas no dbo.TABLETWO - você precisará especificar as colunas caso contrário:
fonte
SELECT... INTO...
instrução parece não funcionar se a tabela especificada naINTO
cláusula ainda não existir. Estou recebendo um erro "variável não declarada". Embora talvez esse problema seja apenas para o MySQL. OCREATE TABLE ... LIKE .. worked
;Existem duas maneiras diferentes de implementar a inserção de dados de uma tabela para outra.
Para tabela existente - INSERT INTO SELECT
Este método é usado quando a tabela já foi criada no banco de dados anteriormente e os dados devem ser inseridos nessa tabela a partir de outra tabela. Se as colunas listadas na cláusula insert e select forem iguais, não será necessário listá-las. É uma boa prática sempre listá-los para fins de legibilidade e escalabilidade.
Para tabela não existente - SELECT INTO
Este método é usado quando a tabela não é criada anteriormente e precisa ser criada quando os dados de uma tabela devem ser inseridos na tabela recém-criada de outra tabela. A nova tabela é criada com os mesmos tipos de dados que as colunas selecionadas.
Ref 1 2
fonte
Funcionaria como indicado abaixo:
fonte
SELECT *
não vai funcionar. Esta é uma maneira melhor, obrigado!Se você já usou
select * into tablename from other tablenames
, da próxima vez, para acrescentar, você dizselect * into existing table tablename from other tablenames
fonte
Se a tabela de destino existir, mas você não desejar especificar os nomes das colunas:
fonte