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

MySQL - Tæller i gruppe

Brugerdefinerede variabler bliver praktiske, når du løser dette problem. Dette burde virke:

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

Hvis du ikke rigtig har noget imod den fjerde kolonne, kan du roligt fjerne den ydre markering. Det ville forbedre ydeevnen meget.




  1. Hvordan TIMESTAMP() virker i MariaDB

  2. Opdater forespørgsel baseret på tilstand

  3. Forstå Pivot Operator i SQL

  4. MySQL:Inner join vs Where