Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como obter uma classificação de linha?


A abordagem de subconsulta que você viu recomendada será dimensionada quadraticamente. http://www. xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/ mostra uma abordagem muito mais eficiente com variáveis ​​de usuário. Aqui está uma adaptação não testada para o seu problema:
@points := -1; // Should be an impossible value.
@num := 0;

SELECT id
  , points
  , @num := if(@points = points, @num, @num + 1) as point_rank
  , @points := points as dummy
FROM `users`
ORDER BY points desc, id asc;