【发布时间】:2017-03-16 19:26:12
【问题描述】:
我有以下表格项目:
Id MemberId MemberGuid ExpiryYear Hash
---------------------------------------------------------------------------
1 1 Guid1 2017 Hash1
2 1 Guid2 2018 Hash2
3 2 Guid3 2020 Hash3
4 2 Guid4 2017 Hash1
我需要将项目从一个成员复制到另一个成员(不仅仅是更新 MemberId,插入新记录)。规则是:如果我想将所有项目从一个成员迁移到另一个成员,我必须检查该项目在新成员中是否存在。
例如,如果我想将成员 1 中的项目移动到成员 2,我将只移动 id 为 2 的项目,因为我在成员 2 处已经有一个具有相同哈希和相同到期年份的项目(这是我在插入新项目之前需要检查的列)。
如何编写一个查询,仅将不存在的项目从一个成员迁移到另一个成员并获取记录的旧 id 和新 id?不知何故有一个 upsert?
【问题讨论】:
-
我使用的是 Sql server 2014
-
MemberGuid 是从旧项目复制的还是计算出来的?旧id会记录在哪里?
-
生成为新的 guid,仅复制到期年份和哈希
标签: sql sql-server tsql upsert sql-merge