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 obtenir le meilleur résultat:
SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
Il retournera la plus riche ligne pour chaque adresse e-mail, mais toutes les données seront retournés dans une chaîne (séparées par des virgules) de sorte que vous aurez à analyser en quelque sorte.
Si la performance est pas question et que vous souhaitez obtenir un résultat normal fixé dans des champs séparés, vous pouvez alors aller avec 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
Qu'entendez-vous par "plus d'enregistrement pertinent"? Une autre ligne avec un email identique? Ou une autre colonne? Ou? – Andomar
Salut, supposé ces deux lignes ci-dessus où dans la base de données - je voudrais sortir celui avec les informations de contact plutôt que la rangée avec des champs vides. – ChrisS