sql >> Database teknologi >  >> RDS >> Mysql

MySQL GROUP BY med præference

Du kan bruge en samlet funktion til at få den mere 'relevante' post for hver e-mail.
Jeg tror, ​​at denne forespørgsel vil give dig det bedste resultat:

SELECT emailAddress, max(concat(fullName,',',address1,',',address2))
FROM table
GROUP BY emailAddress
 

Det vil returnere den rigeste række for hver e-mailadresse, men alle data vil blive returneret inden for en streng (kommasepareret), så du bliver nødt til at parse det på en eller anden måde.
Hvis ydeevne ikke er noget problem, og du gerne vil have et normalt resultat angivet i separate felter, kan du vælge et:

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

  1. Sådan deaktiveres alle triggere i SQL Server-databasen

  2. Sådan bruger du SignalR i en webfarm ved at bruge SQL-serveren som backplane

  3. Hvad betyder dobbeltstænger (||) i SQL?

  4. Løsning i mysql for delvist indeks eller filtreret indeks?