Как я могу добавить выборочные строки в операторе Mysql

0

У меня есть таблица с элементами (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

Спасибо

  • 0
    Какая у тебя версия mysql?
  • 0
    MySQL версия 5.7.17
Показать ещё 4 комментария
Теги:
procedure

1 ответ

0
Лучший ответ

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

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;
  • 0
    Вау, большое спасибо, это сработало отлично

Ещё вопросы

Сообщество Overcoder
Наверх
Меню