Запрос на Переиндексирование первичного ключа базы данных MySQL

у меня есть таблица в MySQL, которая имеет столбец первичного ключа.

допустим:

ID | Value
1  | One
2  | Two
6  | Three
8  | Four
9  | Five

Как мне это сделать:

ID | Value
1  | One
2  | Two
3  | Three
4  | Four
5  | Five

других таблиц нет. Только один. Я просто хочу, чтобы ID был в правильной серии.

любое предложение?? Возможно, вопрос.. :)

3 ответов


существует даже простой способ достичь результата, написав этот запрос

SET @newid=0;
UPDATE tablename SET primary_key_id=(@newid:=@newid+1) ORDER BY primary_key_id;

этот запрос переиндексирует первичный ключ, начиная с 1


Мне кажется, у вас есть два варианта.

1) Создайте новую таблицу и скопируйте существующие данные.

2) Добавьте еще одно поле автоинкремента в существующую таблицу, затем удалите исходный столбец.

ALTER TABLE tableName ADD NewIdn INT NOT NULL AUTO_INCREMENT KEY

Я сделал это в phpmyadmin, сняв флажок A_I (параметр автоматического приращения), нажав кнопку Сохранить, а затем снова проверив его и снова нажав кнопку Сохранить.