我正在尝试从一个表中选择一些字段,并将它们插入到一个现有的存储过程表中。这是我的尝试:
SELECT col1, col2
INTO dbo.TableTwo
FROM dbo.TableOne
WHERE col3 LIKE @search_key
我认为SELECT ... INTO ...
是用于创建临时表的,这就是为什么会出现错误,提示dbo.TableTwo
已经存在。
我该如何将dbo.TableOne
中的多行数据插入到dbo.TableTwo
中?
我正在尝试从一个表中选择一些字段,并将它们插入到一个现有的存储过程表中。这是我的尝试:
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
INTO
子句中指定的表不存在,则SELECT... INTO...
语句似乎无法工作。我收到了一个“未声明的变量”错误。不过,也许这个问题只出现在MySQL中。CREATE TABLE ... LIKE ..
是可以工作的; - LazerSharks有两种不同的方法可以将一张表中的数据插入到另一张表中。
当数据库中已经创建了表格,并且需要从另一个表格中将数据插入到该表格时,可以使用此方法。如果插入子句和选择子句中列名相同,则无需列出它们。为了易读性和可扩展性,通常最好列出它们。
----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
当需要从一个表中插入数据到另一个新创建的表中时,如果该表尚未被创建,则可以使用此方法。新表将按照所选列相同的数据类型进行创建。
----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
insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration
from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & ""
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
SELECT
ID = IDENTITY(INT, 1, 1),
name
INTO table2
FROM table1
BEGIN TRANSACTION
INSERT INTO dbo.Table_A (Column_1)
SELECT DISTINCT Some_Column AS Column_1
FROM dbo.Table_B
WHERE Some_Column
NOT IN (SELECT DISTINCT GroupId
FROM dbo.Table_A)
COMMIT
select *
into existing table database..existingtable
from database..othertables....
select * into tablename from other tablenames
,下次要追加的话,你可以这样说:select * into existing table tablename from other tablenames
。
destination
)的语法是SELECT select_list INTO destination FROM source [WHERE condition]
。select_list
可以是特定的列,但也可以使用*
。 - surfmuggle