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

Énumérer les lignes dans mysql en fonction des groupes

Avant l'introduction des expressions de table communes dans MySQL 8, la première méthode de GL était la plus rapide, mais voici quelques autres idées (utilisant également une technologie plus ancienne), juste pour le plaisir...

1.

SELECT x.*
     , COUNT(*) rank 
  FROM my_table x 
  JOIN my_table y 
    ON y.a = x.a 
   AND y.b <= x.b 
 GROUP  
    BY x.a
     , x.b;

2.

SELECT x.* 
     , FIND_IN_SET(b,n) rank 
  FROM my_table x 
  JOIN 
     ( SELECT a 
            , GROUP_CONCAT(b ORDER BY b) n 
         FROM my_table 
        GROUP 
           BY a
     ) y 
    ON y.a = x.a;