ВСТАВКА MySQL с использованием SELECT с полем, которое увеличивается с каждой вставленной строкой

#mysql

#mysql

Вопрос:

У меня есть две таблицы со столбцами, которые выглядят следующим образом:

Таблица_1:
key | value
1 | apple
2 | banana
3 | carrot

Таблица_2:
sub_index | value

Используя хранимую процедуру, я хочу вставить строки из Table_1 в Table_2 с помощью INSERT…ВЫБЕРИТЕ так, чтобы при каждом выполнении запроса sub_index начиналось с 1.

Например, после первого запуска запроса
INSERT INTO TABLE_2 (value) SELECT value FROM TABLE_1 WHERE key=2

Table_2 должна выглядеть следующим образом:
sub_index | value
1 | banana

и затем, если я выполню другой запрос
INSERT INTO TABLE_2 (value) SELECT value FROM TABLE_1 WHERE key < 4

Table_2 теперь будет выглядеть так:
sub_index | value
1 | banana
1 | apple
2 | banana
3 | carrot

и если я выполню дополнительный запрос
INSERT INTO TABLE_2 (value) SELECT value FROM TABLE_1 WHERE key <= 2

Table_2 теперь будет выглядеть так:
sub_index | value
1 | banana
1 | apple
2 | banana
3 | carrot
1 | apple
2 | banana

Другими словами, каждый раз, когда я запускаю запрос, я хочу, чтобы sub_index поле начиналось с 1 и увеличивалось для каждой записи, вставленной запросом.

Как мне реализовать это поведение для sub_index использования только SQL? (ie. нет программирования с помощью PHP.)

Любой совет с благодарностью получен!

Комментарии:

1. вы пробовали что-нибудь??

2. Я прояснил вопрос. Я хочу, чтобы поле sub_index начиналось с 1 при каждом запуске запроса.

3. Зачем вообще хранить эти производные данные?

Ответ №1:

  set @row_nb=0;
 INSERT INTO Table_2 (`sub_index`,`value`) select (@row_nb := @row_nb  1) as `key`,`value` from Table_1 WHERE `key`< 4