sql >> Database >  >> RDS >> Mysql

MySQL GROUP BY met voorkeur

U zou een verzamelfunctie kunnen gebruiken om voor elke e-mail het meer 'relevante' record te krijgen.
Ik denk dat je met deze zoekopdracht het beste resultaat krijgt:

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

Het retourneert de rijkste rij voor elk e-mailadres, maar alle gegevens worden geretourneerd binnen één tekenreeks (gescheiden door komma's), dus u zult het op de een of andere manier moeten ontleden.
Als prestaties geen probleem zijn en u een normaal resultaat in afzonderlijke velden wilt krijgen, kunt u er een gebruiken:

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. .NET SqlDependency met veel meldingen versus polling met hoge snelheid?

  2. Zal een SQL Server-taak een geplande uitvoering overslaan als deze al actief is?

  3. De 8 meest populaire databases

  4. Inleiding tot native dynamische SQL in Oracle Database