sql >> Databasteknik >  >> RDS >> Mysql

MySQL - rangordning efter count() och GROUP BY

Du behöver hela din resultatuppsättning grupperad efter användar-ID först och beställd... tillämpa sedan rankningen

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

För att hitta en specifik person och problem med att försöka "HA"-klausulen, skulle jag sedan slå ihop det och sedan tillämpa en var...

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



  1. Itererar över heltal[] i PL/pgSQL

  2. Hur man filtrerar datum med datetimepicker via databas

  3. Hitta och ersätt hela mysql-databasen

  4. Fungerar detta för att stoppa sql-injektioner