合并表时增加ID号(SQL)

时间:2016-05-23 11:33:57

标签: sql sql-server

我想要合并两个表 - SomeTable_1和SomeTable_2。它们具有相同的列,来自不同的DB(SomeDB_1 / SomeDB_2)。

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

//get a remote bash shell on server: MANAGEMENT_NAGIOS_SERVER
$shell = \MTS\Factories::getDevices()->getRemoteHost(MANAGEMENT_NAGIOS_SERVER)->getShellBySsh(MANAGEMENT_NAGIOS_USER, 'secretPassword');

//execute the ls command (--color=none to avoid special chars from terminal colors)
$return1  = $shell->exeCmd('ls --color=none /usr/local/nagios/health_check_${CARRIER}.cfg');

echo $return1; //ls return

一切正常,但表逻辑基于ID(主键),当我按照上述方法合并两个表时,我得到两个重复记录(具有相同的ID)。有什么办法可以解决这个问题吗?非常感谢。

2 个答案:

答案 0 :(得分:1)

Tou可以这样做:

而不是使用*,您可以设置列名,避免使用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];

确保将SomeTable中的id列设置为自动增量。

答案 1 :(得分: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