sql >> Databasteknik >  >> RDS >> Mysql

MySQL GROUP BY med preferens

Du kan använda en sammanställningsfunktion för att få den mer "relevanta" posten för varje e-postmeddelande.
Jag tror att den här frågan skulle ge dig det bästa resultatet:

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

Det kommer att returnera den rikaste raden för varje e-postadress men all data kommer att returneras inom en sträng (kommaseparerad) så du måste analysera den på något sätt.
Om prestanda inte är något problem och du vill få ett normalt resultat i separata fält kan du välja ett:

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. MySQL överordnade barn en fråga urval

  2. Hur man skriver lagrade procedurer för professionella SSRS-rapporter

  3. Vad är ett index i SQL?

  4. Hämta uppgifterna från förra månaden i SQL-servern