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

mysql pivottabel med strengværdier

Afhængigt af versionen af ​​mysql du bruger, her er en fremgangsmåde, der etablerer et row_number pr. gruppe og derefter bruge conditional aggregation grupperet efter dette rækkenummer:

select 
    rn, 
    max(case when stuff = 'bag' then name end) 'bag',
    max(case when stuff = 'book' then name end) 'book',
    max(case when stuff = 'shoes' then name end) 'shoes' 
from (
  select *, row_number() over (partition by stuff order by name) rn
  from stuff_table
) t
group by rn

Da du bruger en ældre version af mysql , skal du bruge user-defined variables for at etablere rækkenummeret. Resten fungerer så på samme måde. Her er et eksempel:

select 
    rn, 
    max(case when stuff = 'bag' then name end) 'bag',
    max(case when stuff = 'book' then name end) 'book',
    max(case when stuff = 'shoes' then name end) 'shoes' 
from (
  select *, 
  ( case stuff 
         when @curStuff
         then @curRow := @curRow + 1 
         else @curRow := 1 and @curStuff := stuff 
   end
  ) + 1 AS rn
  from stuff_table, (select @curRow := 0, @curStuff := '') r
  order by stuff
) t
group by rn


  1. Duplikere en MySQL-tabel, indekser og data

  2. Ryd data i MySQL-tabel med PHP?

  3. MYSQL og LIMIT-klausulen

  4. Der skelnes mellem store og små bogstaver, hvor udsagn i laravel