我正在尝试将多个SQL Server数据库合并为一个数据库。问题是其中一个表有一个标识字段作为主键。该表还具有两个唯一two字段。类似于:
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语句,但不幸的是,我需要两列都匹配。
发布于 2009-09-08 18:41:54
您在中提到过,所以我假设您想要合并链接列。这种方式可以安全地多次运行,并避免了标识列问题。
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子句不能...
https://stackoverflow.com/questions/1395550
复制相似问题