SQL Server SELECT到现有表中

我试图从一个表中select一些字段,并从存储过程中插入到现有的表中。 这是我正在尝试的:

SELECT col1, col2 INTO dbo.TableTwo FROM dbo.TableOne WHERE col3 LIKE @search_key 

我认为select into是临时表,这就是为什么我得到一个dbo.TableTwo已经存在的错误。

如何从dbo.TableOne插入多行到dbo.TableTwo

SELECT ... INTO ...仅在INTO子句中指定的表不存在时才起作用 – 否则,您必须使用:

 INSERT INTO dbo.TABLETWO SELECT col1, col2 FROM dbo.TABLEONE WHERE col3 LIKE @search_key 

这假定dbo.TABLETWO中只有两列 – 否则需要指定列:

 INSERT INTO dbo.TABLETWO (col1, col2) SELECT col1, col2 FROM dbo.TABLEONE WHERE col3 LIKE @search_key 

它的工作原理如下:

 insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & "" 
 select * into existing table database..existingtable from database..othertables.... 

如果您已经将select * into tablename from other tablenames用到select * into tablename from other tablenames ,那么下次要追加时,您会将select * into existing table tablename from other tablenames

SELECT INTO语句将数据从一个表复制到一个新表中。

 SELECT * INTO newtable [IN externaldb] FROM oldtable WHERE condition; 

例如:SQL语句创build客户的备份副本

 SELECT * INTO backup FROM Customers; 

有两种不同的方法来实现从一个表插入数据到另一个表。

对于现有表 – INSERT INTO SELECT

当数据库已经在数据库中创build了表,并且数据将被从另一个表插入到这个表中时,就使用这个方法。 如果insert子句和select子句中列出的列是相同的,则不需要列出它们。 为了可读性和可扩展性的目的,始终列出它们是一个很好的做法。

 ----Create testable CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100)) ----INSERT INTO TestTable using SELECT INSERT INTO TestTable (FirstName, LastName) SELECT FirstName, LastName FROM Person.Contact WHERE EmailPromotion = 2 ----Verify that Data in TestTable SELECT FirstName, LastName FROM TestTable ----Clean Up Database DROP TABLE TestTable 

对于非现有表 – SELECT INTO

当表格不是在先创build的,而是需要在一个表格的数据插入到另一个表格的新创build的表格中时才使用此方法。 新表使用与选定列相同的数据types创build。

 ----Create a new table and insert into table using SELECT INSERT SELECT FirstName, LastName INTO TestTable FROM Person.Contact WHERE EmailPromotion = 2 ----Verify that Data in TestTable SELECT FirstName, LastName FROM TestTable ----Clean Up Database DROP TABLE TestTable 

参考1 2