Переприсвоение айди в таблице mysql
Формулировка задачи:
Привет!
Есть проблемка в базе данных mysql. Существует таблица, в которой айди = автоинкрименту. Так вот, за несколько лет в таблицу было добавлено очень много материала, более 100 тысяч. И недавно было принято решение почистить ее. Удаляли все ненужные записи. В итоге теперь в базе айди выглядят примерно так:
1
4
267
483
1147
1938
И тд. У последней записи айди = 183 943. Следующие записи, соответственно, будут принимать значения 183 944 и тд. Собственно вопрос, можно ли как-то заново всем присвоить айди начиная с единицы, чтобы вновь в базе шли такие айди:
1
2
3
4
5
и тд?
Может есть какой-нибудь запрос, который поможет это реализовать?
Заранее благодарю
Решение задачи: «Переприсвоение айди в таблице mysql»
textual
Листинг программы
SET @rn = 0; UPDATE mytable JOIN (SELECT id, (@rn:=@rn+1) AS rn FROM mytable ORDER BY id) mytemp ON mytable.id = mytemp.id SET mytable.id = mytemp.rn; SET @query = CONCAT('ALTER TABLE mytable AUTO_INCREMENT =', @rn, ';'); PREPARE stmt FROM @query; EXECUTE stmt; DEALLOCATE PREPARE stmt;
Объяснение кода листинга программы
В этом коде:
- Создается переменная сессии @rn и инициализируется значением 0.
- Производится обновление таблицы mytable с использованием подзапроса, который сначала сортирует таблицу mytable по полю id, а затем присваивает каждой строке уникальный номер rn.
- Значение переменной @rn используется в запросе на изменение автоинкремента для таблицы mytable.
- Запрос на изменение автоинкремента подготавливается и выполняется.
- Подготовленный запрос на изменение автоинкремента освобождается. Список действий:
- Создать переменную сессии @rn и инициализировать ее значением 0.
- Обновить таблицу mytable с использованием подзапроса, который сначала сортирует таблицу mytable по полю id, а затем присваивает каждой строке уникальный номер rn.
- Использовать значение переменной @rn в запросе на изменение автоинкремента для таблицы mytable.
- Подготовить запрос на изменение автоинкремента.
- Выполнить подготовленный запрос на изменение автоинкремента.
- Освободить подготовленный запрос на изменение автоинкремента.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д