MySQL查询取消组合数据

时间:2013-03-04 14:53:06

标签: mysql

我有与this person完全相同的问题,但对于MySQL而不是SQL Server。可以用MySQL完成取消分组吗?遗憾的是,MySQL没有“Unpivot”功能。以下是我需要的一个例子:

原始数据:

----------------------------------
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
---------------

1 个答案:

答案 0 :(得分: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的数字。