Bạn có thể sử dụng một hàm tổng hợp để nhận được bản ghi 'phù hợp' hơn cho mỗi email.
Tôi nghĩ rằng truy vấn này sẽ mang lại cho bạn kết quả tốt nhất:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Nó sẽ trả về hàng giàu nhất cho mỗi địa chỉ email nhưng tất cả dữ liệu sẽ được trả về trong một chuỗi (được phân tách bằng dấu phẩy), vì vậy bạn sẽ phải phân tích cú pháp nó bằng cách nào đó.
Nếu hiệu suất không có vấn đề gì và bạn muốn nhận được kết quả bình thường được đặt trong các trường riêng biệt thì bạn có thể chọn một:
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