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

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

我认为选择…成……是用于临时表的,这就是为什么我得到一个dbo错误。表2已经存在。

如何从dbo中插入多行。table1变成dbo。table2 ?


当前回答

如果你想从Table_B插入到Table_A,只有当列不在Table_A时,然后使用以下方法:

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 
 ID = IDENTITY(INT, 1, 1),
        name
INTO    table2
FROM table1    

它的工作原理如下:

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

选择……成……只有当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

如果你想从Table_B插入到Table_A,只有当列不在Table_A时,然后使用以下方法:

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 *到tablename,那么下次要追加时,您可以从其他表名中使用select *到现有表tablename中