Sie könnten eine Aggregatfunktion verwenden, um den „relevanteren“ Datensatz für jede E-Mail zu erhalten.
Ich denke, diese Abfrage würde Ihnen das beste Ergebnis liefern:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Es wird die reichhaltigste Zeile für jede E-Mail-Adresse zurückgegeben, aber alle Daten werden innerhalb einer Zeichenfolge (durch Kommas getrennt) zurückgegeben, sodass Sie sie irgendwie analysieren müssen.
Wenn die Leistung kein Problem darstellt und Sie eine normale Ergebnismenge in separaten Feldern erhalten möchten, können Sie sich für eines entscheiden:
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