Повторная индексация первичных ключей MySQL INT и сброс AUTO_INCREMENT

Итак, у меня есть база данных MySQL, которую я использую с PHP-сайтом. В течение недель развития у меня осталось что-то вроде:

Table: users id | name ----------- 12| Bob 34| Jen 155| John 154| Kyle 

Кроме того, это происходит для сотен записей, а идентификаторы – в тысячах.

Я ищу сценарий, который я могу запустить, чтобы переименовать ключи до их самого низкого значения (сохраняя их соответствующие строки), а затем сбросить AUTO_INCREMENT на следующий идентификатор

Желаемый результат:

 Table: users id | name ----------- 1| Bob 2| Jen 3| Kyle 4| John моря Table: users id | name ----------- 1| Bob 2| Jen 3| Kyle 4| John 

И ALTER TABLE users AUTO_INCREMENT = 5;

(Обратите внимание на Kyle и John )

Я понимаю, что мне придется исправить что-либо, ссылающееся на users.id .

Кто-нибудь знает способ сделать это в MySQL или с помощью PHP-скрипта?

Related of "Повторная индексация первичных ключей MySQL INT и сброс AUTO_INCREMENT"

удалить индекс по id

сделайте что-то вроде этого:

 SET @rank:=0; update users set id=@rank:=@rank+1 order by id; 

добавить индекс в идентификатор

Почему вам нужно изменить порядок имен в базе данных? Вы можете просто добавить предложение ORDER BY name по вашему запросу sql, чтобы получить результаты в алфавитном порядке по имени.