sql >> Database >  >> RDS >> Mysql

Hoe krijg je een rijrangschikking?

De subquery-aanpak die u hebt aanbevolen, wordt kwadratisch geschaald. http://www. xaprb.com/blog/2006/12/02/how-to-number-rows-in-mysql/ toont een veel efficiëntere aanpak met gebruikersvariabelen. Hier is een niet-geteste aanpassing aan uw probleem:

@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;


  1. Beslis tussen controle op basis van agenten of controle zonder agenten

  2. SQL-fout:ORA-01861:letterlijk komt niet overeen met opmaakreeks 01861

  3. Kunnen wildcards worden gebruikt op tafelnamen voor een GRANT in MySQL

  4. Manieren om te weten hoe om te gaan met databasecorruptie in SQL Server