I have a table with a bit
column named IsRetry
. I want to remove all the duplicate email addresses that are not set as IsRetry
. If there are duplicates of the IsRetry I want to remove those too. I tried partitioning by IsRetry
, but I am still ending up with emails that are set as IsRetry
and not. The SQL below is removing the duplicates, but it is keeping one of each email. Meaning, one set as IsRetry and one not. Should I run a query to remove the initial duplicates then another to remove any duplicates that are not IsRetry or can I make this into one query?
CREATE TABLE Emails
(
[EmailAddress] varchar(50)
,[Md5Hash] NVARCHAR(32)
,[IsRetry] bit
);
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('email1@gmail.com', '4d35f7e71ffa6246b55f14da99e18ede', 1)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('email1@gmail.com', '4d35f7e71ffa6246b55f14da99e18ede', 0)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('someemail@testplace.com', 'c8e5b73cbe5438c62e9ca001929cb05d', 1)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('someemail@testplace.com', 'c8e5b73cbe5438c62e9ca001929cb05d', 0)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('someemail@testplace.com', 'c8e5b73cbe5438c62e9ca001929cb05d', 0)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('memeTest@hotmail.com', 'ddcb2ab8af5ff8c8040defebf471d5df', 1)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('memeTest@hotmail.com', 'ddcb2ab8af5ff8c8040defebf471d5df', 1)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('memeTest@hotmail.com', 'ddcb2ab8af5ff8c8040defebf471d5df', 0)
insert into Emails (EmailAddress,Md5Hash,IsRetry)
VALUES('memeTest@hotmail.com', 'ddcb2ab8af5ff8c8040defebf471d5df', 0)
;WITH cte
AS(
SELECT ROW_NUMBER() OVER (PARTITION BY Md5Hash,IsRetry ORDER BY ( SELECT 0)) RN
,IsRetry
,EmailAddress
FROM Emails
)
DELETE FROM cte
WHERE RN > 1
Select * from Emails