В Mysql, как заполнить столбец инкрементными целыми числами?

У меня есть база данных с именем «planning», в которой столбец с именем «planning_id» плохо отформатирован, на самом деле он заполнен только нулями.

Я хотел бы постепенно заполнить его правильными идентификаторами; как 1, 2, 3, 4 и т.д.

enter image description here

Я думаю о формуле sql, подобной этой:

BEGIN
DECLARE i INT DEFAULT 1; 
WHILE (i <= 68) DO
    UPDATE planning set planning_id = i;
    SET i = i+1;
END WHILE;
END;

Но выдает ошибку (перевожу с французского на английский):

Unrecognized keywords. Near DECLARE.

Есть идеи ?

INSERT предназначен для создания новых строк, а не для обновления существующих строк.
Barmar 23.04.2022 08:50

Есть ли в таблице первичный ключ или другой уникальный набор столбцов? Вы можете использовать курсор для перебора строк и обновления их на основе этого уникального ключа.

Barmar 23.04.2022 08:51

Конечно, я изменю это, но знаете ли вы, как заранее узнать количество строк (здесь 15)?

RandomFellow 23.04.2022 08:52
SELECT COUNT(*) FROM planning подскажет, сколько рядов.
Barmar 23.04.2022 08:52

Какова логика/порядок для столбца planning_id?

Tim Biegeleisen 23.04.2022 09:01

Если вы не возражаете против сортировки ваших столбцов, вы можете DROPplanning_id и снова добавить его сейчас как первичный ключ и с автоинкрементом, например: ALTER TABLE planning` DROP COLUMN planning_id, ADD COLUMN planning_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST , ДОБАВИТЬ ПЕРВИЧНЫЙ КЛЮЧ (planning_id);`.

the_coding_cat 23.04.2022 09:03

Если вы "не уверен, что это сработает", вы проверяете свою идею на некоторых данных, которые вы создаете для этой цели. Это базовая отладка, которую вы делаете в первую очередь. Только когда ваш код не работает и и вы не видите, как это исправить, вы можете опубликовать вопрос на Переполнение стека. Спрашивать у группы случайных незнакомцев в Интернете, что они считать, — не лучший способ создать надежный код.

Tangentially Perpendicular 23.04.2022 09:05

@TheCoolCat спасибо, не могли бы вы дать ответ с помощью этого решения, я не уверен, что полностью понимаю

RandomFellow 23.04.2022 09:05

@TimBiegeleisen «логика» заключается в том, что каждой строке должно быть присвоено другое целое число. И каждое созданное целое число должно быть увеличено на единицу от предыдущего (начиная с 1). Короче говоря, просто простой столбец с «автоинкрементными» идентификаторами :)

RandomFellow 23.04.2022 09:09
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
9
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

ALTER TABLE table_name AUTO_INCREMENT = start_value;

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

Интересно, но как мне убедиться, что эти значения автоинкремента будут затронуты в столбце Planning_id?

RandomFellow 23.04.2022 09:12

ALTER TABLE Planning MODIFY COLUMN Planning_id INT auto_increment PRIMARY KEY

부건혁 23.04.2022 09:15
Ответ принят как подходящий

Если вы не возражаете против сортировки ваших столбцов, вы можете DROPplanning_id и снова добавить его сейчас как Основной ключ и с auto_increment как:

ALTER TABLE planning DROP COLUMN planning_id, 
ADD COLUMN planning_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT FIRST, 
ADD PRIMARY KEY (planning_id);

Таким образом, ваши planning_id будут обновлять свои значения в порядке возрастания (1, 2, 3, 4 и т. д.).

Проверьте Поле AUTO INCREMENT в MySQL

Auto-increment allows a unique number to be generated automatically when a new record is inserted into a table.

Often this is the primary key field that we would like to be created automatically every time a new record is inserted

работал ! Спасибо !

RandomFellow 23.04.2022 09:14

Рад помочь :)

the_coding_cat 23.04.2022 09:15

Другие вопросы по теме