#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