如何在 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;
我有一个包含项目 (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;