Możesz użyć funkcji agregującej, aby uzyskać bardziej „odpowiedni” rekord dla każdego e-maila.
Myślę, że to zapytanie przyniesie najlepszy wynik:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Zwróci najbogatszy wiersz dla każdego adresu e-mail, ale wszystkie dane zostaną zwrócone w jednym ciągu (oddzielonym przecinkami), więc będziesz musiał je jakoś przeanalizować.
Jeśli wydajność nie stanowi problemu i chcesz uzyskać normalny zestaw wyników w oddzielnych polach, możesz wybrać jeden:
SELECT table.emailAddress, fullName, address1, address2
FROM
table JOIN
(SELECT emailAddress,
max(concat(fullName,address1,address2)) as bestRowInOneString
FROM table
GROUP BY emailAddress
) bestRowsSubQuery
ON
concat(table.fullname,table.address1,table.address2) = bestRowsSubQuery.bestRowInOneString
AND table.emailAddress = bestRowsSubQuery.emailAddress