Единственный способ, которым я знаю, как это сделать - это вставить в таблицу со столбцом автоинкремента.Я не знаю, как это сделать с существующей таблицей, но вы можете создать новую, а затем скопировать в нее предыдущую таблицу, заполнив в процессе столбец автоинкремента:
CREATE TABLE newTable (col1, col2, ..., colAuto INT NOT NULL AUTO_INCREMENT);
INSERT INTO newTable (col1, col2, ..., colAuto)
SELECT col1, col2, ..., NULL -- NULL for colAuto
FROM yourTable
ORDER BY ad_id;
Это должно привести к новой таблице с теми же данными и столбцу colAuto
, который начинается с 1, как указано в столбце ad_id
в исходной таблице.После этого вы можете изменить colAuto
, если вы не хотите, чтобы оно больше автоматически увеличивалось.Вы также можете удалить исходную таблицу, если она больше не служит какой-либо цели.
Редактировать:
Мы также можем сделать это, используя переменную сеанса с номером строки:
SET @rn := 0;
UPDATE yourTable
SET colAuto = (SELECT @rn := @rn + 1 )
ORDER BY ad_id;
Но на практике выполнение такого обновления в столбце без автоинкремента может не иметь большого смысла для бизнеса.Это связано с тем, что, как только вы добавите больше данных в свою таблицу, вам придется снова вручную обновлять, но на этот раз последовательность будет начинаться с некоторого числа, отличного от нуля.Действительно, столбец с автоинкрементом - это способ легко поддерживать последовательность в SQL.