sql >> Base de Datos >  >> RDS >> Mysql

Enumerar filas en mysql según grupos

Antes de la introducción de expresiones de tabla comunes en MySQL 8, el primer método de GL sería el más rápido, pero aquí hay un par de otras ideas (que también usan tecnología más antigua), solo por diversión...

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;