2015-03-29 3 views

ответ

1

Часто это тип операции легче выполнять на прикладном уровне. Однако вы можете сделать это, перечислив каждую строку для каждого типа, а затем агрегируя ее.

Я думаю, что это делает то, что вы хотите:

select max(case when type = 1 then concat_ws(':', id, type) end) as type1, 
     max(case when type = 2 then concat_ws(':', id, type) end) as type2, 
     max(case when type = 3 then concat_ws(':', id, type) end) as type3 
from (select t.*, 
      (@rn := if(@t = type, @rn + 1, 
         if(@t := type, 1, 1) 
         ) 
      ) as rn 
     from table t cross join 
      (select @rn := 0, @t := -1) vars 
     order by type, id 
    ) t 
group by rn 
+0

спасибо Я сделал это в прикладном уровне :) –

Смежные вопросы