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

MySQL - Compteur au sein du groupe

Les variables définies par l'utilisateur deviennent pratiques lors de la résolution de ces problèmes. Cela devrait fonctionner :

select g, x, counter from (
    select g, x,
        @counter := if (g = @prev_g, @counter + 1, 1) counter,
        @prev_g := g
    from tb, (select @counter := 0, @prev_g := null) init
    order by g, x
) s

Si la quatrième colonne ne vous dérange pas vraiment, vous pouvez supprimer en toute sécurité la sélection externe. Cela améliorerait beaucoup les performances.