2016-05-23 63 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 
相關問題