如何在 Mysql 语句中添加选择性行

How can I add selective rows in a Mysql statement

我有一个包含项目 (A,B) 和句点的 table。我想添加包含每个项目缺失周期的行(对于项目 A 添加周期为 1 到 4 的行,对于项目 B 添加周期为 3 的行)。如果可能的话,在一个过程中或者没有真正改变原来的 table (实际上我有超过 1000 个项目)

原文:

item period
a    0
a    5
a    3
b    2
b    4

期望:

item period
a    0
a    1
a    2
a    3
a    4
a    5
b    2
b    3
b    4

谢谢

您需要一个号码 table。让我假设你有一个:

select i.item, n.n as period
from (select item, min(period) as minp, max(period) as maxp
      from items
      group by item
     ) i join
     numbers n
     on n.n between i.minp and i.maxp;

如果你没有这样的table,你可以生成一个:

select i.item, n.n as period
from (select item, min(period) as minp, max(period) as maxp
      from items
      group by item
     ) i join
     (select (@rn := @rn + 1) as n
      from items i cross join
           (select @rn := -1) params
      limit 241
     ) n
     on n.n between i.minp and i.maxp;