Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Ranking nach count() und GROUP BY

Sie müssen Ihre gesamte Ergebnismenge zuerst nach Benutzer-ID gruppieren und ordnen... und dann das Ranking anwenden

select
      @rownum := @rownum +1 as rank,
      prequery.uid,
      prequery.PostCount
   from
      ( select @rownum := 0 ) sqlvars,
      ( SELECT uid, count(id) postCount
           from posts
           group by uid
           order by count(id) desc ) prequery

Um für eine bestimmte Person ein Problem zu bekommen und die "HAVING"-Klausel zu versuchen, würde ich es dann einpacken und dann ein "where...

" anwenden
select WrappedQuery.* 
   from ( entire query from above ) WrappedQuery
   where WrappedQuery.uid = SinglePerson