我有一个名为bit
的{{1}}列的表格。我想删除未设置为IsRetry
的所有重复电子邮件地址。如果有重复的IsRetry我也想删除它们。我尝试按IsRetry
进行分区,但我仍然最终收到设置为IsRetry
的电子邮件。下面的SQL是删除重复项,但它保留每个电子邮件之一。意思是,一个设置为IsRetry而另一个设置为IsRetry。我应该运行查询来删除初始重复项,然后另一个查询删除任何不是IsRetry的重复项,还是可以将其复制到一个查询中?
IsRetry
答案 0 :(得分:3)
听起来你只想留下一封电子邮件。如果设置了IsRetry
,那么您希望它是一组。如果是,那么您不希望IsRetry
分区。你想在order by
子句中找到它:
with todelete as (
select e.*,
row_number() over (partition by EmailAddress
order by IsRetry desc ) as seqnum
from Emails
)
delete from todelete
where seqnum > 1;
我将分区更改为使用email
。可以使用相同的MD5哈希码来生成两个不同的电子邮件。