我进入了一个场景,我需要下载和更新一个目录,其中有代码和它的描述。所以我试图导入这些数据到一个临时表,并使用合并语句做插入/更新到我的目标表,但我结束了一个问题,我的临时表有重复的记录和合并语句,我是用来插入重复的记录到目标表。
示例:临时表包含数据
Code Description
C1 Desc1
C2 Desc2
C1 Desc1
我希望目标表数据为
Code Description
C1 Desc1
C2 Desc2
我使用下面的合并语句:
MERGE INTO Frames as Target using Temp as Source
on Source.Code=Target.Code
WHEN MATCHED THEN UPDATE set Target.Description=Source.Description
WHEN NOT MATCHED THEN insert (Code,Description) values (Code,Description);
但最终我的目标表有了数据
Code Description
C1 Desc1
C2 Desc2
C1 Desc1
我知道这对你们中的一些人来说可能是一个简单的查询。但是我不擅长sql,所以期待一些解决我的问题的方法。
先谢了。
3条答案
按热度按时间ehxuflar1#
只是不要直接使用
Temp
作为源代码,而是先过滤它以获得不同的值vlf7wbxs2#
在目标表上创建唯一索引以防止重复。
chy5wohz3#
另一种避免在合并时从源表插入重复记录的方法是,如果您使用的数据库不支持MERGE语句,则只需使用UPDATE和INSERT语句:
希望这个有用。