Mysql
 sql >> база данни >  >> RDS >> Mysql

Вземете ранг, базиран на резултат, от неподредена MySql база данни, когато е дадено потребителско име

Това ще се справи с рангове, които имат еднакъв резултат.

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'

например

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

за по-добра производителност добавете INDEX в колона Score ,

ALTER TABLE tableName ADD INDEX (Score)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Нишка беше окачена на java.net.SocketInputStream.socketRead0(Native Method), някой знае ли какво се случи?

  2. Как да зададете ръчно начална стойност като 1000 в MySQL

  3. MySQL филтър JSON_CONTAINS Всяка стойност от масив

  4. Хибридни работни натоварвания на база данни OLTP/Analytics в клъстер Galera, използващи асинхронни подчинени устройства

  5. Какво е значението на параметъра TINYINT(параметър)?