我正在尝试在两个表(表A和表B)之间运行merge语句。该语句应该更新记录,如果指定字段(名称)上存在匹配项,而插入记录则不存在匹配项。
执行merge语句时,将引发以下错误:
Violation of UNIQUE KEY constraint 'AK_UniqueName'. Cannot insert duplicate key in object 'dbo.Table B'. The duplicate key value is (A. Adams).
合并语句,表A,表B和所需结果如下:
合并声明
BEGIN
MERGE dbo.TableB AS T
USING dbo.TableA AS S
ON T.Name LIKE S.Name
WHEN MATCHED THEN
UPDATE SET T.Lname = IsNULL(S.Lname,T.Lname),
WHEN NOT MATCHED THEN
INSERT (Name, Lname);
END
表A
**Name** **Lname**
A. Adams Adams
B. Adams Adams
表B
**Name** **Lname**
A. Adams Adams
C. Adams Adams
所需结果(合并后的表B-带有新一行)
**Name** **Lname**
A. Adams Adams
B. Adams Adams
C. Adams Adams
答案 0 :(得分:1)
通常,这在源中有重复的行或正在更新主键时发生。
这就是为什么我很少使用MERGE
的原因。取而代之的是,我使用单独的UPDATE
和INSERT
语句,使您可以将问题隔离到插入或更新步骤。
ON T.Name LIKE S.Name
不太可能是正确的。请改为尝试ON T.Name = S.Name