首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合并SQL Server数据库

合并SQL Server数据库
EN

Stack Overflow用户
提问于 2009-09-08 18:31:03
回答 1查看 372关注 0票数 0

我正在尝试将多个SQL Server数据库合并为一个数据库。问题是其中一个表有一个标识字段作为主键。该表还具有两个唯一two字段。类似于:

代码语言:javascript
复制
datatable:
id pk identity
link1 uniqueid
link2 uniqueid

我最初的想法是运行以下脚本:

代码语言:javascript
复制
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语句,但不幸的是,我需要两列都匹配。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-09-08 18:41:54

您在中提到过,所以我假设您想要合并链接列。这种方式可以安全地多次运行,并避免了标识列问题。

代码语言:javascript
复制
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子句不能...

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1395550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档