将一个表中的数据添加到具有相同列名

时间:2018-03-12 21:02:19

标签: sql

我在YouTube上找到了很多例子,在谷歌的搜索方面,我仍然可以找到一块墙。我有两个数据库(我相信)相同的表格,结构等。

db1.dbo.table比db2.dbo.table提供的信息要多得多。我想将db1.dbo.table中的一些信息复制到已经创建的db2.dbo.table(它有一些我希望保留的现有值)。

以下是一个例子:

SELECT * FROM table WHERE TYPE = '1'

如果我针对db1.dbo.table运行它,则返回12行的值。当针对db2.dbo.table运行时,它会导致2行。我想保留这两行,但是再添加db1.dbo.table中的其他12行。

如果我使用:

select * into db2.dbo.table from db1.dbo.table

我收到表已经存在的错误。

如果我尝试以下方法:

Use db1
go
insert into table
select *
from table
where type (this is one of my column names) = '1' (one of the appropriate values)

我收到"表格'表格中的标识列的显式值只能在使用列列表且IDENTITY_INSERT为ON时指定。"在研究中,我尝试了以下内容:

Set Identity_Insert table (the name of my table) ON
Go
Insert into db2.dbo.table(column 1,column2,etc.,)
select (here, I've tried * as well as the same column1,column2,etc., values as above)
From db1.dbo.table

我还没有找到正确的组合。我说我仍然是SQL的新手,但我理解技术,我理解在我读取/尝试编辑和执行环境的示例中发生的事情,我只是不确定如何正确排除故障。我将重申我想要完成的事情。

我想复制从以下位置返回的值:

SELECT * FROM TABLE WHERE TYPE = '1' in db1 (returns 12 rows)
into db2 (where the same returns 2 rows, I want this to return the same 2, plus the 12 from the other db when I'm done).

1 个答案:

答案 0 :(得分:2)

尝试INSERT INTO:

而不是SELECT INTO
INSERT INTO 
    db2.dbo.table 
        (
        col1, 
        col2, 
        col3, 
        etc.
        )
    SELECT 
        col1, 
        col2, 
        col3, 
        etc. 
    FROM 
        db1.dbo.table
    WHERE 
        TYPE = '1'