2013-03-04 83 views
1

我有和this person一样的确切问题,但是对于MySQL而不是SQL Server。可以用MySQL完成取消组合吗? MySQL不幸的是没有“Unpivot”功能。这里是什么,我需要一个例子:MySQL查询取消组合数据

原始数据:

---------------------------------- 
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 2013-03-10 20:13:41