sql >> Databasteknik >  >> RDS >> Mysql

Få en rankning, baserat på poäng, från en oordnad MySql-databas när du får ett användarnamn

Detta kommer att hantera rangordningar som har samma poäng.

SELECT  d.*, c.ranks
FROM
        (
          SELECT    Score, @rank:[email protected]+1 Ranks
          FROM
                  (
                      SELECT  DISTINCT Score 
                      FROM    tableName a
                      ORDER   BY score DESC
                  ) t, (SELECT @rank:= 0) r
        ) c 
        INNER JOIN tableName d
            ON c.score = d.score
// WHERE   d.username = 'Helen'

till exempel

KEY     username    password    score   Ranks
1       Anna        123         5       3
2       Bobby       345         6       2
3       Helen       678         6       2
4       Jon         567         2       4
5       Arthur      ddd         8       1

för bättre prestanda, lägg till ett INDEX i kolumnen Score ,

ALTER TABLE tableName ADD INDEX (Score)


  1. Hur man skapar tabeller med hjälp av GUI i SQL Server - SQL Server / T-SQL Tutorial Del 37

  2. Sök i en tabell efter Point in Polygon med MySQL

  3. Rekursion på databasfråga för att få hierarkiska resultat med Hibernate - Java

  4. Få datum mellan två datum