2016-05-23 30 views
0

我想合并两个表 - SomeTable_1和SomeTable_2。他们有相同的列,来自不同的数据库(SomeDB_1/SomeDB_2)。在合并表的情况下增加ID号(SQL)

因此,我从另一个数据库(SomeDB)中的空白表(SomeTable)开始,并开始合并上述表中的数据。

INSERT INTO [SomeDB].[dbo].[SomeTable] SELECT * FROM [SomeDB_1].[dbo].[SomeTable_1]; 
INSERT INTO [SomeDB].[dbo].[SomeTable] SELECT * FROM [SomeDB_2].[dbo].[SomeTable_2]; 

一切正常,但是表格逻辑基于ID(主键),当我根据上述合并两个表,我发现了两个重复的记录(具有相同的ID)。有没有办法如何处理这个问题?提前致谢。

+0

你可以在[SomeTable]中添加一个新的列来指定数据来自哪里?你需要原始的ID吗?如果没有,您可以用原始ID替换一个新的身份列吗? – Vedran

+0

是的,我需要原始ID。 – SmithiM

+1

然后,我看不到其他解决方案,只是在[SomeTable] – Vedran

回答

1

头能做到这样:

而不是使用*您可以设置列名避免ID列..

INSERT INTO [SomeDB].[dbo].[SomeTable] (column1, column2, column3...) SELECT column1, column2, column3 , ... FROM [SomeDB_1].[dbo].[SomeTable_1]; 
INSERT INTO [SomeDB].[dbo].[SomeTable] (column1, column2, column3...) SELECT column1, column2, column3 , ...FROM [SomeDB_2].[dbo].[SomeTable_2]; 

可以肯定,你做的id列在SomeTable设为自动递增。

+0

中添加一个列。是的,这也是我也想知道的。但我需要保留ID进一步内部连接... – SmithiM

+0

然后,你必须添加一个列相关的源表名称..并使用复合键得到适当的行 – scaisEdge

0

使用可以使用下面的代码。它将允许将数据插入到IDENTITY COLUMN。这与SQL Server 2012工作正常

SET IDENTITY_INSERT [SomeDB].[dbo].[SomeTable] ON 
INSERT INTO [SomeDB].[dbo].[SomeTable] SELECT * FROM [SomeDB_1].[dbo].[SomeTable_1]; 
INSERT INTO [SomeDB].[dbo].[SomeTable] SELECT * FROM [SomeDB_2].[dbo].[SomeTable_2]; 
SET IDENTITY_INSERT [SomeDB].[dbo].[SomeTable] OFF 
相关问题