Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL obtient la position de la ligne dans ORDER BY

Utilisez ceci :

SELECT x.id, 
       x.position,
       x.name
  FROM (SELECT t.id,
               t.name,
               @rownum := @rownum + 1 AS position
          FROM TABLE t
          JOIN (SELECT @rownum := 0) r
      ORDER BY t.name) x
 WHERE x.name = 'Beta'

...pour obtenir une valeur de position unique. Ceci :

SELECT t.id,
       (SELECT COUNT(*)
          FROM TABLE x
         WHERE x.name <= t.name) AS position,
       t.name    
  FROM TABLE t      
 WHERE t.name = 'Beta'

... donnera aux liens la même valeur. IE :S'il y a deux valeurs à la deuxième place, elles auront toutes les deux une position de 2 lorsque la première requête donnera une position de 2 à l'une d'elles et de 3 à l'autre...