MySQL如果聚合值大于1,则返回多行

时间:2015-02-05 20:45:36

标签: mysql

表有聚合值,但如果值大于1,我需要返回多行。

以下是该表现在的样子:

date  description   amount

1/1/2015   alpha    3

1/1/2015    beta    1

以下是我需要它返回的方式:

date    description amount

1/1/2015    alpha   1

1/1/2015    alpha   1

1/1/2015    alpha   1

1/1/2015    beta    1

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

你需要一张数字表。这样的东西最多可以使用3个并且可以轻松扩展:

select t.date, t.description, 1 as amount
from table t join
     (select 1 as n union all select 2 union all select 3) n
     on n.n <= t.amount;

编辑:

如果表中有足够多的行用于较大的金额,您可以执行以下操作:

select t.date, t.description, 1 as amount
from table t join
     (select @rn := @rn + 1 as n
      from table cross join (select @rn := 0) vars
     ) n
     on n.n <= t.amount;

答案 1 :(得分:0)

这很有效。

选择t.date,t.description,1作为金额 从表t加入      (选择@rn:= @rn + 1作为n       从表交叉连接(选择@rn:= 0)变量      )n      在n.n&lt; = t.amount;