sql >> Databasteknik >  >> RDS >> Mysql

MySQL får radposition i ORDER BY

Använd detta:

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'

...för att få ett unikt positionsvärde. Detta:

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

...kommer att ge slipsar samma värde. IE:Om det finns två värden på andra plats, kommer de båda att ha en position på 2 när den första frågan ger en position på 2 till en av dem och 3 till den andra...



  1. PostgreSQL versionskontroll med Atlassian Bitbucket

  2. Det går inte att ansluta till Postgres via PHP men kan ansluta från kommandoraden och PgAdmin på annan maskin

  3. Docker-behållare för Postgres 9.1 exponerar inte port 5432 för värd

  4. Vad kräver detta JavaScript?