2013-03-04 4 views
1

У меня такой же точный вопрос, как this person, но для MySQL, а не для SQL Server. Можно ли разгруппировать с MySQL? К сожалению, у MySQL нет функции «Unpivot». Вот пример того, что мне нужно:MySQL Query to Ungroup Data

необработанных данных:

---------------------------------- 
owner id | name | occurances 
---------------------------------- 
1  | red  | 4 
1  | yellow | 2 
1  | green | 3 
---------------------------------- 

Запрос на выход:

--------------- 
id | name 
--------------- 
1 | red 
1 | red 
1 | red 
1 | red 
1 | yellow 
1 | yellow 
1 | green 
1 | green 
1 | green 
--------------- 

ответ

0

Вам нужен набор чисел для этого. Вот один из способов:

select id, name 
from t join 
     (select d1.d + 10 * d2.d + 100*d3.d as num 
     from (select 1 as d union all select 2 union all select 3 union all 
       select 4 union all select 5 union all select 6 
       select 7 union all select 8 unin all select 9 union all select 0 
      ) d1 cross join 
       (select 1 as d union all select 2 union all select 3 union all 
       select 4 union all select 5 union all select 6 
       select 7 union all select 8 unin all select 9 union all select 0 
      ) d2 cross join 
       (select 1 as d union all select 2 union all select 3 union all 
       select 4 union all select 5 union all select 6 
       select 7 union all select 8 unin all select 9 union all select 0 
      ) d3 
     ) n 
     where n.num between 1 and occurrences 

Это работает для чисел до 999.

+0

Это верное решение для MySQL, спасибо. – Mike