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