Итак, у меня есть база данных 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-скрипта?
удалить индекс по id
сделайте что-то вроде этого:
SET @rank:=0; update users set id=@rank:=@rank+1 order by id;
добавить индекс в идентификатор
Почему вам нужно изменить порядок имен в базе данных? Вы можете просто добавить предложение ORDER BY name
по вашему запросу sql, чтобы получить результаты в алфавитном порядке по имени.