увеличение неавтоматического приращения поля во время вставки на основе выбора в MySQL - PullRequest
3 голосов
/ 02 февраля 2011

Я вставляю записи из одной таблицы в другую с помощью оператора select. Таблица, в которую вставляется новая, имеет новое поле, которое должно увеличиваться на единицу в каждом обновлении, но не должно быть полем автоинкремента, так как число должно начинаться заново для каждой группы записей для обновления. Если используемый оператор выбора выбирает 42 записи, новая таблица будет иметь поле, которое увеличивается на 1 для каждой записи, начинающейся с одной. В следующей группе это поле должно снова иметь значение 1, а затем увеличиваться для каждой выбранной записи. Возможно ли это сделать? У меня проблемы с поиском синтаксиса для использования, так как большая часть моего поиска просто находит результаты об автоинкрементных ключах.

INSERT into images (filename, imgpath, imagenumber)
SELECT filename, imgpath, 1+
FROM old_images
WHERE event_id = 20

Это простой пример таблиц, но мне интересно, есть ли способ увеличить то, что помещается в поле imagenumber в таблице изображений непосредственно в mySql.

1 Ответ

4 голосов
/ 02 февраля 2011

Взгляните на использование пользовательских переменных

Что-то вроде

SET @t1=0; 
INSERT into images (filename, imgpath, imagenumber) 
SELECT  filename, 
        imgpath, 
        @t1 := @t1+1 
FROM    old_images 
WHERE   event_id = 20 
...