Mysql
 sql >> Database >  >> RDS >> Mysql

Enumera le righe in MySQL in base ai gruppi

Prima dell'introduzione delle espressioni di tabella comuni in MySQL 8, il primo metodo di GL sarebbe stato il più veloce, ma ecco un paio di altre idee (usando anche una tecnologia precedente), solo per divertimento...

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;