Как обновить таблицу для добавления первичного ключа и обновить все существующие строки с увеличенными идентификаторами?

У меня есть таблица с 20 000 строк данных, которые я импортировал, но я забыл поставить первичный ключ, чтобы у каждой строки был уникальный ключ.

Я хочу, чтобы первая строка начиналась с идентификатора 1 и увеличивалась до последней строки и заканчивалась идентификатором 20000. Как обновить все строки одним запросом?

Я использую MySQL. Попытался использовать PhpMyAdmin, но он этого не сделает.

2 ответа

Решение

После добавления нового столбца ID (пока не устанавливайте в качестве первичного ключа и не включайте автоинкремент) выполните:

SET @index = 1;
UPDATE tablename SET ID = (@index:=@index+1);

Это устанавливает возрастающее значение идентификатора, начиная с 1, для каждой из ваших существующих строк, таким образом решая проблему с дублирующимся ключом, с которой вы столкнулись бы, если бы попытались вставить новый столбец первичного ключа после того, как данные уже были введены.

После этого вы можете установить столбец идентификатора в качестве первичного ключа с автоматическим приращением.

+ Изменить tablename и выполните следующую инструкцию SQL. Он создаст новый первичный ключ с именем id и заполнит его, начиная с первой строки как 1.

ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id);
Другие вопросы по тегам