Как я могу добавить выборочные строки в операторе Mysql - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть таблица с элементами (A, B) и периодами.Я хотел бы добавить строки, которые содержат пропущенные периоды для каждого элемента (для элемента A добавьте строки с периодами от 1 до 4, а для элемента B добавьте строку с периодом 3).Если возможно в процедуре или без фактического изменения исходной таблицы (на самом деле у меня более 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

Спасибо

1 Ответ

0 голосов
/ 13 сентября 2018

Вам нужна таблица чисел. Позвольте мне предположить, что у вас есть один:

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;

Если у вас нет такой таблицы, вы можете сгенерировать ее:

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