Vous pouvez utiliser une fonction d'agrégation pour obtenir l'enregistrement le plus "pertinent" pour chaque e-mail.
Je pense que cette requête vous permettrait d'obtenir le meilleur résultat :
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Il renverra la ligne la plus riche pour chaque adresse e-mail, mais toutes les données seront renvoyées dans une chaîne (séparées par des virgules), vous devrez donc l'analyser d'une manière ou d'une autre.
Si les performances ne posent aucun problème et que vous souhaitez obtenir un ensemble de résultats normaux dans des champs séparés, vous pouvez en choisir un :
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