1
我需要一个SQL查询来删除下图中的重复项。假设表格的名称是“打开”。 删除/忽略表中的重复记录并只保留最早的记录
正如您所看到的,在Id,SendQueueId,SubscriberId和Email中有很多记录几乎相同。唯一不同的是他们的DateTime。我只需要从每个ID中选择一个,以便我的ID将是唯一的,并且只保留最早的一个。
我需要一个SQL查询来删除下图中的重复项。假设表格的名称是“打开”。 删除/忽略表中的重复记录并只保留最早的记录
正如您所看到的,在Id,SendQueueId,SubscriberId和Email中有很多记录几乎相同。唯一不同的是他们的DateTime。我只需要从每个ID中选择一个,以便我的ID将是唯一的,并且只保留最早的一个。
使用公用表达式使用ROW_NUMBER
函数识别重复项,并删除指定为“第一个”的所有出现项。
;with cte as (
select *,
row_number() over (
partition by Id, SendQueueId, SubscriberId, Email, WP_CampaignId
order by DateTime
) as RN
from
Opens
)
delete
cte
where
RN > 1
另一suolution与标准的SQL:
delete from opens a where not exists (Select * From (select Id, SendQueueId, SubscriberId, Email, WP_CampaignId, min(date_time) date_time From opens group by Id, SendQueueId, SubscriberId, Email, WP_CampaignId) b Where a.id = b.id and a.SendQueueId = b.SendQueueId and a.SubscriberId = b.SubscriberId and a.Email = b.Email and a.WP_CampaignId = b.WP_CampaignId);
...你可能不希望显示在互联网上的人的电子邮件地址。 – anaximander
@anaximander你可能想找到解决问题的办法cz,这就是为什么我在这里。 – Disasterkid
有点不为...如果我有解决方案,我会发布它,但在此期间,我只是试图帮助你,指出这些电子邮件地址的所有者可能不希望他们在网上发布那样的。不需要捕捉。 – anaximander