如何在更新前从临时表#ABCD中找出致原表重复的值
找出更新后会导致原表出现重复值的临时表记录
问题场景
原表Original和临时表#ABCD的数据如下:
原表Original:
ID Value 1 a 2 b 3 c 4 d
临时表#ABCD:
ID Value 1 b 2 a 3 d
当按ID匹配用临时表更新原表时,临时表中ID=3的记录会将原表ID=3的Value改为d,而原表ID=4的Value已经是d,这会导致更新后原表出现重复值。我们需要在执行更新前,从临时表中找出这类会引发重复的记录。
解决方案SQL
SELECT abcd.ID, abcd.Value FROM #ABCD abcd INNER JOIN Original o ON abcd.Value = o.Value AND abcd.ID != o.ID;
逻辑说明
- 通过
INNER JOIN关联临时表和原表,匹配条件为临时表的Value与原表的Value相同,同时临时表的ID与原表的ID不同。 - 这个条件筛选出的临时表记录,其
Value在原表的其他行已经存在,执行更新后必然会造成原表Value字段的重复。
查询结果
ID Value 3 d
内容的提问来源于stack exchange,提问作者le huy
相关产品推荐
相关产品推荐

