У меня есть простая таблица MySQL, а первичный индекс (id) не пронумерован один за другим (1, 31, 35, 100 и т.д.). Я хочу, чтобы их пронумеровали как (1, 2, 3, 4). Скажите, пожалуйста, как это сделать. Я также хотел бы указать, что я знаю о возможных последствиях операции, но я просто хочу убрать таблицу.
Как перенумеровать первичный индекс
Ответ 1
Я согласен, что другие методы будут работать, но я просто предлагаю другую идею. Это обойдется без каких-либо требований к созданию таблицы temp::
SET @i=0;
UPDATE table_name SET column_name=(@i:[email protected]+1);
Ответ 2
попробуйте перенумеровать метод dalmp (Уровень абстракции базы данных DALMP для MySQL с использованием PHP.)
$db->renumber('table','uid');
в основном он делает это:
SET @var_name = 0;
UPDATE Tablename SET ID = (@var_name := @var_name +1);
ALTER TABLE tablename AUTO_INCREMENT = 1
Ответ 3
Самое простое решение:
- Переименуйте таблицу в tablename_temp
- Создайте новую таблицу со старым именем и той же структурой
- INSERT INTO tablename (id, field1, field2, field3) SELECT NULL, field1, field2, field3,... FROM tablename_temp;
- DROP tablename_temp
Это уничтожит все ваши данные, если вы используете внешние ключи, и я настоятельно рекомендую вам оставить идентификаторы такими, какие они есть. База данных не является неопрятной, поскольку первичные ключи не находятся в последовательности, база данных неопрятно, если ее ссылочная целостность (значения идентификатора, указывающие на неправильную или несуществующую строку в других таблицах) нарушена.
Ответ 4
CREATE TABLE newtable
LIKE oldtable
SELECT NULL, col1, col2, col3, etc FROM oldtable;
Без включения столбца первичного ключа в select, но все остальные столбцы.
И столбец первичного ключа должен быть первым в таблице, или вам нужно установить NULL
в позицию столбца первичного ключа. И столбец должен иметь настройку "NOT NULL". В противном случае он будет просто установлен как null, и этот тип бессмыслен.
Причина этого в том, что MySQL любит игнорировать вставки NULL в auto_increments и вместо этого создает для него новый номер (при условии, что значение null не является допустимым значением в этом столбце).
Ответ 5
- Удалить столбец "id".
- Создайте столбец с именем id с автоматическим добавлением (и не разрешите null), он будет иметь новые значения, которые вы хотите.
- Назначьте этот новый столбец "id" как PK.
отредактирован позже благодаря комментариям.
Ответ 6
Ты этого не хочешь. Первичный ключ не является числом. Это просто бессмысленная уникальная последовательность.
Ответ 7
Вы должны определить автоинкремент на вашем первичном ключе (если это первичный ключ)
Здесь ссылка: