Как обновить таблицу для добавления первичного ключа и обновить все существующие строки с увеличенными идентификаторами?
У меня есть таблица с 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);