合并SQL Server数据库
问题描述:
我试图将多个SQL Server数据库合并为一个。问题是其中一个表有一个标识字段作为主键。该表还有两个唯一的字段。喜欢的东西:合并SQL Server数据库
datatable:
id pk identity
link1 uniqueid
link2 uniqueid
我最初的想法是运行以下脚本:
declare @maxId as int
set @maxId = (SELECT IsNull(MAX(id),0) FROM datatable)
SET IDENTITY_INSERT datatable ON
INSERT INTO database1.datatable id, link1, link2 SELECT id + @maxId, link1, link2 FROM database2.datatable
SET IDENTITY_INSERT datatable OFF
其中一期工程,除了是查询运行了多次的数据被复制。 确保link1和link2的组合不存在于我的表格中的最佳方法是什么?
如果只有一列我可以使用IN语句,但不幸的是我需要两个colums匹配。
答
你提到IN,所以我假设你想合并链接列。 这种方式可以安全地运行多次并避免IDENTITY列问题。
INSERT INTO database1.datatable (link1, link2)
SELECT link1, link2
FROM database2.datatable d2
WHERE NOT EXISTS (SELECT *
FROM
database1.datatable d1
WHERE
d1.link1 = d2.link1 and d1.link2 and d2.link2)
如果这是错的,你仍然可以使用EXISTS/NOT EXISTS处理与IN子句不能...
完全信息,我一直在寻找多列。谢谢。 – Kyle 2009-09-08 19:40:20