Como você está usando a coluna id como um indicador de qual registro é 'original':
delete x
from myTable x
join myTable z on x.subscriberEmail = z.subscriberEmail
where x.id > z.id
Isso deixará um registro por endereço de e-mail.
edite para adicionar:
Explicando a pergunta acima...
A ideia aqui é juntar a mesa contra ela mesma. Finja que você tem duas cópias da tabela, cada uma com um nome diferente. Então você pode compará-los entre si e encontrar o ID mais baixo ou para cada endereço de e-mail. Você verá os registros duplicados que foram criados posteriormente e poderá excluí-los. (Eu estava visualizando o Excel ao pensar sobre isso.)
Para fazer essa operação em uma tabela, compará-la consigo mesma e poder identificar cada lado, você usa aliases de tabela.
x
é um alias de tabela. É atribuído no from
cláusula assim:from <table> <alias>
. x
agora pode ser usado em outro lugar na mesma consulta para se referir a essa tabela como um atalho. delete x
inicia a consulta com nossa ação e alvo. Vamos realizar uma consulta para selecionar registros de várias tabelas e queremos excluir os registros que aparecem em x
. Os aliases são usados para se referir a ambas as 'instâncias' da tabela.
from myTable x join myTable z on x.subscriberEmail = z.subscriberEmail
bate a tabela contra si mesma onde os e-mails correspondem. Sem a cláusula where a seguir, cada registro seria selecionado, pois poderia ser unido a si mesmo. O
where
cláusula limita os registros selecionados. where x.id > z.id
permite o alias de 'instância' x
para conter apenas os registros que correspondem aos e-mails, mas têm um id
maior valor. Os dados que você realmente deseja na tabela, endereços de e-mail exclusivos (com o menor id) não farão parte de x
e não será deletado. Os únicos registros em x
serão registros duplicados (endereços de e-mail) com um id
maior do que o registro original para esse endereço de e-mail. As cláusulas join e where podem ser combinadas neste caso:
delete x
from myTable x
join myTable z
on x.subscriberEmail = z.subscriberEmail
and x.id > z.id
Para evitar duplicatas, considere tornar a coluna subscriberEmail uma coluna indexada UNIQUE.