Существует очень твердое продолжающийся ряд на NETTUTS прямо сейчас, которым можно интересоваться.
Могу я спросить, зачем вам это нужно?
Если кто-то изменит любое из значений имени или вставит новые строки, это испортит вашу схему упорядочивания. Попытка сохранить какой-то смысл в упорядочивании PK, который уже доступен в другом месте таблицы (столбец имени), кажется излишним и, следовательно, плохой идеей.
Гораздо лучшее решение - не беспокоиться о значении столбца идентификатора и просто отсортируйте по столбцу имени, когда вы используете данные в своем приложении.
PS: Извините за ответ без ответа. Обычно я предполагаю, что у вас есть веская причина, и просто даю ответ, который напрямую касается того, что вы пытаетесь сделать, но из других ваших вопросов я заметил, что вы все еще находитесь на ранних этапах изучения дизайна базы данных,
Самый простой способ сбросить автоматическое приращение - создать другую таблицу.
MySQL предоставляет такие полезные команды, как CREATE TABLE LIKE
и RENAME TABLE
.
CREATE TABLE table2 LIKE table1;
INSERT INTO table2
SELECT * FROM table1 ORDER BY name;
DROP TABLE table1;
RENAME TABLE table2 TO table1;
] Вы можете ВЫБРАТЬ новую таблицу из старой таблицы, упорядочив свой выбор по желанию. Иметь идентификатор автоинкремента в новой таблице. При необходимости отбросьте старую таблицу и переименуйте новую таблицу.
Почему бы не добавить «ORDER BY name ASC» в конце вашего запроса? Я предполагаю, что вам по какой-то причине нужен идентификатор.
SELECT
RANK() Over (ORDER BY Name) As NewID
, Name
, Color
FROM Fruits
можно сохранить во временную таблицу, затем усечь, затем усечь таблицу фруктов и вставить, но это, вероятно, дерьмовые решения.