È possibile utilizzare una funzione di aggregazione per ottenere il record più "rilevante" per ciascuna e-mail.
Penso che questa query ti darebbe il miglior risultato:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Restituirà la riga più ricca per ogni indirizzo e-mail, ma tutti i dati verranno restituiti all'interno di una stringa (separati da virgole), quindi dovrai analizzarli in qualche modo.
Se le prestazioni non sono un problema e desideri ottenere un set di risultati normale in campi separati, puoi sceglierne uno:
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