【问题标题】:Merge SQL Server databases合并 SQL Server 数据库
【发布时间】:2009-09-10 03:28:27
【问题描述】:

我正在尝试将多个 SQL Server 数据库合并为一个。问题是其中一张表有一个身份字段作为主键。该表还有两个 uniqueid 字段。比如:

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 语句,但不幸的是我需要两列来匹配。

【问题讨论】:

    标签: sql sql-server database


    【解决方案1】:

    您提到了 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 子句不能处理的多个列...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多