Можете да използвате обобщена функция за получаване на по-„подходящия“ запис за всеки имейл.
Мисля, че тази заявка ще ви даде най-добрия резултат:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Той ще върне най-богатия ред за всеки имейл адрес, но всички данни ще бъдат върнати в рамките на един низ (разделен със запетая), така че ще трябва да го анализирате по някакъв начин.
Ако производителността не е проблем и искате да получите нормален набор от резултати в отделни полета, тогава можете да използвате едно:
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