SQL Server SELECT进入现有表

我试图从一个表中选择一些字段并将它们从存储过程插入到现有表中。 这是我正在尝试的: sql

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

我认为SELECT ... INTO ...是临时表,这就是为何我获得dbo.TableTwo已经存在的错误。 数据库

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


#1楼

它的工做原理以下: spa

insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration 
from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & ""

#2楼

select *
into existing table database..existingtable
from database..othertables....

若是你已经使用了select * into tablename from other tablenames ,下次要追加,你能够select * into existing table tablename from other tablenames code


#3楼

SELECT ... INTO ...仅在INTO子句中指定的表不存在时才有效 - 不然,您必须使用: get

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

假设dbo.TABLETWO中只有两列 - 不然须要指定列: it

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

#4楼

有两种不一样的方法能够实现从一个表到另外一个表插入数据。 io

对于现有表 - INSERT INTO SELECT

当先前已在数据库中建立表并将数据从另外一个表插入此表时,将使用此方法。 若是insert子句和select子句中列出的列相同,则不须要列出它们。 为了可读性和可伸缩性的目的,始终列出它们是一种好习惯。 table

----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

当先前未建立表时,须要使用此方法,而且须要在未来自一个表的数据从另外一个表插入到新建立的表中时建立该方法。 使用与所选列相同的数据类型建立新表。 ast

----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


#5楼

若是目标表确实存在但您不想指定列名称:

DECLARE @COLUMN_LIST NVARCHAR(MAX);
DECLARE @SQL_INSERT NVARCHAR(MAX);

SET @COLUMN_LIST = (SELECT DISTINCT
    SUBSTRING(
        (
            SELECT ', table1.' + SYSCOL1.name  AS [text()]
            FROM sys.columns SYSCOL1
            WHERE SYSCOL1.object_id = SYSCOL2.object_id and SYSCOL1.is_identity <> 1
            ORDER BY SYSCOL1.object_id
            FOR XML PATH ('')
        ), 2, 1000)
FROM
    sys.columns SYSCOL2
WHERE
    SYSCOL2.object_id = object_id('dbo.TableOne') )

SET @SQL_INSERT =  'INSERT INTO dbo.TableTwo SELECT ' + @COLUMN_LIST + ' FROM dbo.TableOne table1 WHERE col3 LIKE ' + @search_key
EXEC sp_executesql @SQL_INSERT
相关文章
相关标签/搜索